武汉理工大学《能力拓展训练》设计说明书
第四章 各功能模块基于VHDL的设计
4.1 时基产生与测频时序控制电路模块的VHDL源程序
程序ctrl.vhd LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL IS
PORT(CLK: IN STD_LOGIC; -系统时钟 LOCK: OUT STD_LOGIC; -锁存信号 EN: OUT STD_LOGIC; -计数允许信号 CLR: OUT STD_LOGIC); -清零信号 END;
ARCHITECTURE ART OF CTRL IS
SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0); -定义变量 BEGIN PROCESS(CLK) BEGIN
IF(CLK'EVENT AND CLK='1')THEN -检测时钟上升沿 IF Q=\
Q<=\计数大于15,清零 ELSE
- 10 -
武汉理工大学《能力拓展训练》设计说明书
Q<=Q+'1'; -允许计数 END IF; END IF; EN<=NOT Q(3);
LOCK<=Q(3) AND NOT(Q(2)) AND Q(1); CLR<=Q(3) AND Q(2) AND NOT(Q(1)); END PROCESS; END ART;
程序主要讲述了由时钟信号产生计数允许信号、清零信号和锁存信号,而且限定了响应时间为不超过15s。
4.2 待测信号脉冲计数电路模块的VHDL源程序
4.2.1 十进制加法计数器的VHDL源程序
程序cb10.vhd LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CB10 IS
PORT(CLK,EN,CLR: IN STD_LOGIC;
COUNT10: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); -计数输
信号
END CB10;
ARCHITECTURE ART OF CB10 IS -结构体 BEGIN
- 11 -
武汉理工大学《能力拓展训练》设计说明书
PROCESS(CLK,CLR,EN) BEGIN
IF CLR='1' THEN
COUNT10<=\计数器清零
ELSIF RISING_EDGE(CLK) THEN -检测时钟上升沿 IF(EN='1') THEN -检测是否允许计数 IF COUNT10=\
COUNT10<=\计数值满9清零 ELSE
COUNT10<=COUNT10+'1'; -允许计数 END IF; END IF; END IF; END PROCESS; END ART;
程序主要讲述了十进制加法计数器的使用,在符合了一定的标准以后十进制的使用,在计数器满9后清零。
4.2.2待测信号脉冲计数器的VHDL源程序
程序count.vhd LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNT IS
PORT(CLK: IN STD_LOGIC; -待测时钟信号 EN: IN STD_LOGIC; -计数选通控制信号 CLR: IN STD_LOGIC; -计数器清零信号
- 12 -
武汉理工大学《能力拓展训练》设计说明书
QA,QB,QC,QD: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); -结果输出
信号
END;
ARCHITECTURE ART OF COUNT IS
COMPONENT CB10 -元件CB10引用说明语句 PORT(CLK,EN,CLR: IN STD_LOGIC;
COUNT10: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); -计数输
出信号
END COMPONENT;
SIGNAL CLK2: STD_LOGIC; SIGNAL CLK3: STD_LOGIC; SIGNAL CLK4: STD_LOGIC; BEGIN
CLK2<=NOT QA(3); CLK3<=NOT QB(3); CLK4<=NOT QC(3);
U1:CB10 PORT MAP(CLK,EN,CLR,QA); -元件引用例示 U2:CB10 PORT MAP(CLK2,EN,CLR,QB); -元件引用例示 U3:CB10 PORT MAP(CLK3,EN,CLR,QC); -元件引用例示 U4:CB10 PORT MAP(CLK4,EN,CLR,QD); -元件引用例示 END ART;
4.3 锁存与译码显示控制电路模块的VHDL源程序
4.3.1 译码显示电路的VHDL源程序
程序bcd7.vhd LIBRARY IEEE;
- 13 -
武汉理工大学《能力拓展训练》设计说明书
USE IEEE.STD_LOGIC_1164.ALL; ENTITY BCD7 IS
PORT(BCD: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -BCD输入信号 LED: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); -七段译码输出信号 END;
ARCHITECTURE ART OF BCD7 IS BEGIN
LED<=\WHEN BCD=\ELSE -对照七段字形显示译
码器真值表
\ \ \ \ \ \ \ \ \ \END ART;
程序主要讲述了七段译码器的显示问题,对应的给出了信号输入过程中七段译码器的各种显示。
4.3.2 锁存与译码显示控制模块的VHDL源程序
程序lock.vhd LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
- 14 -