1、 SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -段控制信号输出 BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );-位控制信号输出END;ARCHITECTURE one OF SCAN_LED IS SIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL A : INTEGER RANGE 0 TO 15;BEGINP1: PROCESS( CNT8 ) BEGIN CASE CNT8 IS WHEN 000 = BT = 00000001 ; A NULL ; END CASE ;
2、 END PROCESS P1; P2: PROCESS(CLK) IF CLKEVENT AND CLK = 1 THEN CNT8 SG 0000110 WHEN 2 =1011011 WHEN 3 =1001111 WHEN 4 =1100110 WHEN 5 =1101101 WHEN 6 =1111101 WHEN 7 =0000111 WHEN 8 =1111111 WHEN 9 =1101111 WHEN 10 =1110111 WHEN 11 =1111100 WHEN 12 =0111001 WHEN 13 =1011110 WHEN 14 =1111001 WHEN 15
3、=1110001 END PROCESS P3;仿真波形如下所示:经过硬件测试后,输入与输出满足题目要求和仿真结果。实验内容2:修改实验内容1的程序,增加8个4位锁存器作为输出显示数据缓冲器,由外部输入8个待显示的十六进制数。ENTITY datasetable IS OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ; datain : in std_logic_vector(3 downto 0); lock: in std_logic);ARCHITECTURE one OF datasetable IS SIGNAL c : signal a : std_logic_v
4、ector(3 downto 0); signal b1: signal b2: signal b3: signal b4: signal b5: signal b6: signal b7: signal b8: PROCESS( CNT8) a(3 downto 0)=b1(3 downto 0);=b2(3 downto 0);=b3(3 downto 0);=b4(3 downto 0);=b5(3 downto 0);a(3 downto 0)c=0;0001=1;0010=2;0011=3;0100=4;0101=5;0110=6;0111=7;1000=8;1001=9;1010=
5、10;1011=11;1100=12;1101=13;1110=14;1111=15; END CASE; END PROCESS P4;P5:PROCESS(cnt8,lock,datain)BEGIN CASE cnt8 ISWHEN IF lock= THEN b1(3 downto 0)=datain(3 downto 0); end IF; IF lock= THEN b2(3 downto 0) THEN b3(3 downto 0) THEN b4(3 downto 0) THEN b5(3 downto 0) THEN b6(3 downto 0) THEN b7(3 down
6、to 0) THEN b8(3 downto 0)NULL;END CASE;END PROCESS P5; END one;实验六 数控分频器的VHDL设计学习数控分频器的设计、分析和测试方法。数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。其原理是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。用VHDL语言设计一个8位数控分频器。引脚锁定以及硬件下载测试,选择目标器件EP1C3,建议选实验电路模式No.0,模式图如附录1附图1所示。用键1、键2作为置数数据D的输入端,CLK接clock0,FOUT接至扬声器Sp
7、eaker。(时序仿真时CLK周期设5ns10ns,D分别设33H, FEH)ENTITY DVF IS PORT( CLK : IN STD_lOGIC; D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC);END ENTITY DVF;ARCHITECTURE ONE OF DVF ISSIGNAL FULL: STD_LOGIC; P_REG: VARIABLE CNT8: STD_LOGIC_VECTOR(7 DOWNTO 0);EVENT AND CLK= THEN IF CNT8=11111111 CNT8:=D;
8、FULL= ELSE CNT8:=CNT8+1;0 END PROCESS P_REG; P_DIV: PROCESS(FULL) VARIABLE CNT2: IF FULLEVENT AND FULL= THEN CNT2:= NOT CNT2; IF CNT2= THEN FOUT ELSE FOUT END PROCESS P_DIV;END ARCHITECTURE ONE;将8位数控分频器扩展为16位数控分频器。ENTITY RXL IS IN STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY RXL;ARCHITECTURE ONE OF RXL IS STD_LOGIC_VECTOR(15 DOWNTO 0);1111111111111111