我已將我的代碼修改爲以下內容以從50Mhz傳入時鐘生成0.5 Mhz時鐘我已使用同步計數器時鐘使能並檢測din輸入數據中的00110001模式並輸出圖像中所示的同步脈衝。但是我希望在檢測模式中的最後一位的同時不要同時進行。請在下面檢查我的代碼,並讓我知道我的錯在哪裏。我非常感謝你的幫助。謝謝。 VHDL模式檢測器
pattern_detector_clk_0_5mhz : process(clk_50mhz)
begin
if clk_50mhz'event and clk_50mhz = '1' then
if rst = '0' then
clk_enable_0_5mhz <= '0';
temp1 <= (others => '0');
else
temp1 <= temp1 +"1";
clk_enable_0_5mhz <= '0';
if temp1 >= x"63" then --hexadecimal value for 99
temp1 <= (others => '0');
clk_enable_0_5mhz <= not clk_enable_0_5mhz;
end if;
end if;
end if;
end process;
decoder_shift_reg_proc: process (clk_50mhz)
begin
if clk_50mhz'event and clk_50mhz = '1' then
if rst = '0' then
decoder_shift8 <= (others => '0');
elsif clk_enable_0_5mhz = '1' then
for i in 0 to 6 loop
decoder_shift8(i+1) <= decoder_shift8(i);
end loop;
decoder_shift8(0) <= din;
end if;
end if;
end process;
sync_detector_process: process(decoder_shift8)
begin
if decoder_shift8 = PATTERN_TO_DETECT or decoder_shift8 = not PATTERN_TO_DETECT then
sync_detected <= '1';
else
sync_detected <= '0';
end if;
end process;
格式的代碼可以正確 – gawi
與您的代碼的問題是,你仍然可以使用50MHz的時鐘來檢查模式,你的第二個proccess應該只引用對clk_enable_0_5mhz和RST – gawi
感謝gawi,當我在只使用clk_enable_0_5mhz第二個進程和實現代碼,然後我得到以下警告:路由:455 - CLK網絡:clk_enable_0_5mhz_OBUF可能會有過度歪斜,因爲 – user24883