?? counter.vhd
字號:
--/*****************************************************************************
-- * 源文件: counter.vhd
-- * 模塊: 計數器/分頻器
-- * 版權:
-- * Copyright(C) 北京聯華眾科科技有限公司
-- * www.lianhua-zhongke.com.cn
-- * 版本: Version 1.0
-- *
-- * 功能說明:
-- * 對輸入時鐘按照參數指定的分頻系數進行分頻輸出,同時對輸入時鐘計數,
-- * 計數模值亦由參數指定。
-- * 參數說明:
-- * 輸出
-- * counter - 每個輸入時鐘到來后加1,達到計數器模值unit后恢復為0
-- * carrier - 分頻輸出,它的頻率由輸入時鐘和分頻參數確定
-- * f_carrier = f_clock/divisor
-- *
-- * 輸入
-- * clock - 時鐘
-- * reset - 復位信號,低電平有效
-- *
-- * 參數
-- * divisor - 分頻系數,它的作用可用如下公司描述
-- * 計數器/分頻器的輸出頻率 = 輸入時鐘 clock 頻率/分頻系數
-- * inner_counter_width - 內部計數器變量位寬,內部計數器變量>=divisor/2
-- * unit - 計數模值
-- *
-- * 變更記錄:
-- * 2006.01.28, 新建
-- *
-- *****************************************************************************/
LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;USE ieee.std_logic_unsigned.all;ENTITY counter IS GENERIC ( divisor : INTEGER:= 24000000; inner_counter_width : INTEGER:= 32; unit : STD_LOGIC_VECTOR(3 downto 0):= "1111" ); PORT ( clock : IN STD_LOGIC; reset : IN STD_LOGIC; counter : BUFFER STD_LOGIC_VECTOR(3 downto 0); carrier : BUFFER STD_LOGIC ); END counter;ARCHITECTURE counter_architecture OF counter IS BEGIN PROCESS(clock) VARIABLE delay_counter : INTEGER RANGE 0 TO divisor; BEGIN IF (reset = '0') THEN carrier <= '1'; counter <= "0000"; delay_counter := 0; ELSE IF(clock = '1' AND clock'EVENT) THEN IF (delay_counter = divisor/2-1) THEN carrier <= NOT carrier; delay_counter := 0; ELSE delay_counter := delay_counter+1; END IF; IF (counter = unit) THEN counter <= "0000"; ELSE counter <= counter+1; END IF; END IF; END IF; END PROCESS;END counter_architecture;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -