?? fpq.txt
字號:
在數(shù)字電路中,常需要對較高頻率的時鐘進行分頻操作,得到較低頻率的時鐘信號。我們知道,在硬件電路設(shè)計中時鐘信號時非常重要的。
下面我們介紹分頻器的VHDL描述,在源代碼中完成對時鐘信號CLK的2分頻,4分頻,8分頻,16分頻。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY clkdiv IS
PORT(clk : IN STD_LOGIC;
clk_div2 : OUT STD_LOGIC;
clk_div4 : OUT STD_LOGIC;
clk_div8 : OUT STD_LOGIC;
clk_div16 : OUT STD_LOGIC);
END clk_div;
ARCHITECTURE rtl OF clk_div IS
SIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(clk)
BEGIN
IF (clk’event AND clk=’1’) THEN
IF(count=”1111”) THEN
Count <= (OTHERS =>’0’);
ELSE
Count <= count +1;
END IF ;
END IF ;
END PROCESS;
clk_div2 <= count(0);
clk_div4 <= count(1);
clk_div8 <= count(2);
clk_div16 <= count(3);
END rtl;
對于分頻倍數(shù)不是2的整數(shù)次冪的情況,我們只需要對源代碼中的計數(shù)器進行一下計數(shù)控制就可以了,如下面源代碼描述一個對時鐘信號進行6分頻的分頻器。
ENTITY clkdiv IS
PORT(clk : IN STD_LOGIC;
clk_div6 : OUT STD_LOGIC);
END clk_div;
ARCHITECTURE rtl OF clk_div IS
SIGNAL count : STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL clk_temp : STD_LOGIC;
BEGIN
PROCESS(clk)
BEGIN
IF (clk’event AND clk=’1’) THEN
IF(count=”10”) THEN
count <= (OTHERS =>’0’);
clk_temp <=NOT clk_temp;
ELSE
count <= count +1;
END IF ;
END IF ;
END PROCESS;
clk_div6 <= clk_temp;
END rtl;
前面兩個分頻器的例子描述的將時鐘信號進行分頻,分頻后得到的時鐘信號的占空比為1:1。在進行硬件設(shè)計的時候,往往要求得到一個占空比不是1:1的分頻信號,這時仍采用計數(shù)器的方法來產(chǎn)生占空比不是1:1的分頻信號。下面源代碼描述的是這樣一個分頻器:將輸入的時鐘信號進行16分頻,分頻信號的占空比為 1:15,也就是說,其中高電位的脈沖寬度為輸入時鐘信號的一個周期。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY clkdiv IS
PORT(clk : IN STD_LOGIC;
clk_div16 : OUT STD_LOGIC);
END clk_div;
ARCHITECTURE rtl OF clk_div IS
SIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(clk)
BEGIN
IF (clk’event AND clk=’1’) THEN
IF(count=”1111”) THEN
Count <= (OTHERS =>’0’);
ELSE
Count <= count +1;
END IF ;
END IF ;
END PROCESS;
PROCESS(clk)
BEGIN
IF (clk’event AND clk=’1’) THEN
IF(count=”1111”) THEN
Clk_div16 <= ‘1’;
ELSE
Clk_div <= ‘0’;
END IF ;
END IF ;
END PROCESS;
END rtl;
對于上述源代碼描述的這種分頻器,在硬件電路設(shè)計中應(yīng)用十分廣泛,設(shè)計人員常采用這種分頻器來產(chǎn)生選通信號、中斷信號和數(shù)字通信中常常用到的幀頭信號等。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -