图第6章仍D4设计应用实例 BEGIN PROCESS (ABIN, DIN) BEGIN FORIIN0TO7LOOP-循环,分别完成8位数据与一位 DOUT()<=DIN( AND ABIN;-控制位的与操作 END LOOP END PROCESS END ART
第6章 VHDL设计应用实例 BEGIN PROCESS (ABIN,DIN) BEGIN FOR I IN 0 TO 7 LOOP --循环,分别完成8位数据与一位 DOUT (I)<=DIN (I)AND ABIN; --控制位的与操作 END LOOP; END PROCESS; END ART;
图第6章仍D4设计应用实例 2)16位锁存器的源程序REG16BVHD LIBRARY IEEE USE IEEE STD LOGIC 1164ALL: ENTITY REG16B IS 16位锁存器 PORT(CLK: IN STD LOGIC:-锁存信号 CLR IN STD LOGIC -清零信号 D: IN STD LOGIC VECTOR(8 DOWNTO0)-8位数据输入 Q: OUT STD LOGIC VECTOR(15 DOWNTO0);-16位数据输出 END REGI6B ARCHITECTURE ART OF REG16B IS SIGNAL RI6S: STD LOGIC VECTOR(I5 DOWNTO 0) 16位寄存器设置
第6章 VHDL设计应用实例 2) 16位锁存器的源程序REG16B.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG16B IS --16位锁存器 PORT (CLK:IN STD_LOGIC; --锁存信号 CLR:IN STD_LOGIC; --清零信号 D:IN STD_LOGIC_VECTOR (8 DOWNTO 0) --8位数据输入 Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--16位数据输出 END REG16B; ARCHITECTURE ART OF REG16B IS SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0); --16位寄存器设置
图第6章仍D4设计应用实例 BEGIN PROCESS (CLK, CLR BEGIN IF CLR=1 THEN RI6S<="000000000000000"; 异步复位信号 ELSIF CLKEVENT AND CLK =1 THEN 时钟到来时,锁存输入值 R16S(6 DOWNTO O)<=R16S(7 DOWNTO 1); 右移低8位 RI6S(15 DOWNTO 7<=D -将输入锁到高能位 END IF: END PROCESS Q<=R16S END ART
第6章 VHDL设计应用实例 BEGIN PROCESS (CLK,CLR) BEGIN IF CLR = '1' THEN R16S<= "0000000000000000"; --异步复位信号 ELSIF CLK'EVENT AND CLK = '1' THEN --时钟到来时,锁存输入值 R16S(6 DOWNTO 0)<=R16S(7 DOWNTO 1); --右移低8位 R16S(15 DOWNTO 7)<=D; --将输入锁到高能位 END IF; END PROCESS; Q<=R16S; END ART;
图第6章仍D4设计应用实例 3)8位右移寄存器的源程序SREG8B.ⅤHD LIBRARY IEEE USE IEEE STD LOGIC 1164.AI -8位右移寄存器 ENTITY SREG&B IS PORT(CLK IN STD LOGIC; LOAD: IN STD LOGIC; BIN: IN STD LOGIC VECTOR(ZDOWNTO O); QB: OUT STD LOGIC ) END SREG8B ARCHITECTURE ART OF SREG8B IS SIGNAL REG&B: STD LOGIC VECTOR(T DOWNTO 0) BEGIN PROCESS (CLK, LOAD)
第6章 VHDL设计应用实例 3) 8位右移寄存器的源程序SREG8B.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --8位右移寄存器 ENTITY SREG8B IS PORT (CLK:IN STD_LOGIC; LOAD :IN STD _LOGIC; BIN:IN STD_LOGIC_VECTOR(7DOWNTO 0); QB:OUT STD_LOGIC ); END SREG8B; ARCHITECTURE ART OF SREG8B IS SIGNAL REG8B:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS (CLK,LOAD)
图第6章仍D4设计应用实例 BEGIN F CLKEVENT AND CLK-1 THEN IF LOAD=1 THEN REG&<=DIN: 装载新数据 ELSE REG8(6 DOWNTO0)<=REG8(7 DOWNTO1);-数据右移 END IF: END IF: END PROCESS QB=REG8(O 输出最低位 END ART
第6章 VHDL设计应用实例 BEGIN IF CLK'EVENT AND CLK= '1' THEN IF LOAD = '1' THEN REG8<=DIN; --装载新数据 ELSE REG8(6 DOWNTO0)<=REG8(7 DOWNTO 1);--数据右移 END IF; END IF; END PROCESS; QB<= REG8 (0); --输出最低位 END ART;