输出端口:Q4,Q3,Q2,A1,A0;
(4)设计输出:下面即为采用VHDL语言编写的锁存器模块设计文件: library ieee;
use ieee.std_logic_1164.all; entity lock is port(l:in std_logic;
a4,a3,a2,a1,a0:in std_logic_vector(3 downto 0); q4,q3,q2,q1,q0:out std_logic_vector(3 downto 0)); end lock;
architecture lock_arc of lock is begin process(l)
variable t4,t3,t2,t1,t0:std_logic_vector(3 downto 0); begin
if l'event and l='0'then t4:=a4; t3:=a3; t2:=a2; t1:=a1; t0:=a0; end if; q4<=t4; q3<=t3;
q2<=t2; q1<=t1; q0<=t0; end process; end lock_arc; 仿真图形如下图
图4.9锁存器模块仿真
此图为锁存器的方针图,当L每到一个下降沿的时候,锁存器对输入信号进行锁存,输入a0,a1,a2,a3,a4分别输入123456789,则输出在L为下降沿到来时锁存,输出q0,q1,q2,q3,q4也为123456789,即输出等于输入。
4.译码器模块(DISP) 译码器模块示意图:
图4.10译码器模块示意图
(1)译码器模块的功能是:对输出信号进行译码,把四位二进制数译码为7段显示,
使其接到数码管,数码管能够正常显示。
(2)设计实体(Entity):计数模块取名DISP; (3)端口定义(Port):各输入输出引脚定义如下: 输入端口:D; 输出端口:Q;
(4)设计输出:下面即为采用VHDL语言编写的译码器模块设计文件: library ieee;
use ieee.std_logic_1164.all; entity disp is
port(d:in std_logic_vector(3 downto 0); q:out std_logic_vector(6 downto 0)); end disp;
architecture disp_arc of disp is begin process(d) begin case d is
when \ when \ when \ when \ when \ when \
when \ when \ when \ when \ when others=>q<=\ end case; end process; end disp_arc; 仿真图形如图4.11。
图4.11译码器模块仿真
此图为译码器的仿真,输入信号为一个四位二进制数,从0000到1001,即十进制的0到9,译码为数码管的a到g七段,即0000000到1101111。由图可知,例如当输入为0010时则输出为1011011。
5.信号发生器
(1)信号发生器部分是由正弦波发生器产生一个被测正弦波,完后经过一个斯密特触发器,使之变成一个方波即把一个模拟量转化为数字量。
(2)施密特触发器
将555定时器的阀值输入端和触发输入端连在一起,便构成了施密特触发器如图4.12所示。
VccVcc1.847Vo2V1655523Vo15Vic
图4.12由555定时器构成的施密特触发器
当输入如图4.13所示的三角波的时候,则施密特触发器的Vo1端可得到方波输出,把被测的模拟量转化为数字量。
2/3Vcc1/3VcctoVo1to
图4.13输入输出的转化