. .. . .
VHDL程序填空题
(一) 在下面横线上填上合适的VHDL关键词,完成2选1多路选择器的设计。 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; 1 MUX21 IS PORT(SEL:IN STD_LOGIC; A,B:IN STD_LOGIC; Q: OUT STD_LOGIC ); END MUX21;
2 BHV OF MUX21 IS BEGIN
Q<=A WHEN SEL=’1’ ELSE B; END BHV;
(二) 在下面横线上填上合适的语句,完成BCD-7段LED显示译码器的设计。 LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY BCD_7SEG IS
PORT( BCD_LED : IN STD_LOGIC_VECTOR(3 DOWNTO 0); LEDSEG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END BCD_7SEG; ARCHITECTURE BEHAVIOR OF BCD_7SEG IS BEGIN
PROCESS(BCD_LED) 3
IF BCD_LED=\ ELSIF BCD_LED=\ ELSIF BCD_LED=\ 4 ; ELSIF BCD_LED=\ ELSIF BCD_LED=\ ELSIF BCD_LED=\ ELSIF BCD_LED=\ ELSIF BCD_LED=\ ELSIF BCD_LED=\ ELSIF BCD_LED=\ ELSE LEDSEG<= 5 ; END IF;
END PROCESS; END BEHAVIOR;
(三) 在下面横线上填上合适的语句,完成数据选择器的设计。 LIBRARY IEEE;
. . . w
. .. . .
USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX16 IS
PORT( D0, D1, D2, D3: IN STD_LOGIC_VECTOR(15 DOWNTO 0); SEL: IN STD_LOGIC_VECTOR( 6 DOWNTO 0); Y: OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END;
ARCHITECTURE ONE OF MUX16 IS BEGIN
WITH 7 SELECT Y <= D0 WHEN \ D1 WHEN \ D2 WHEN \ D3 WHEN 8 ; END;
(四) 在下面横线上填上合适的语句,完成JK触发器的设计。 说明:设计一个异步复位/置位JK触发器,其真值表如下:
INPUT OUTPUT
PSET CLR CLK J K Q 0 1 X X X 1 1 0 X X X 0 0 0 X X X 不定 1 1 上升沿 0 1 0 1 1 上升沿 1 0 1 1 1 上升沿 1 1 翻转 1 1 上升沿 0 0 保持
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY JKFF1 IS
PORT (PSET,CLR,CLK,J,K : IN STD_LOGIC; Q : OUT STD_LOGIC); END JKFF1;
ARCHITECTURE MAXPLD OF JKFF1 IS SIGNAL TEMP:STD_LOGIC; BEGIN
PROCESS(PSET,CLR,CLK) BEGIN
IF (PSET='0'AND CLR='1' ) THEN TEMP<='1'; ELSIF (PSET='1'AND CLR='0' ) THEN TEMP<='0'; ELSIF (PSET='0'AND CLR='0' ) THEN NULL;
9 (CLK'EVENT AND CLK='1') THEN 10 (J='0' AND K='0') THEN TEMP<=TEMP; . . . w
. .. . .
ELSIF (J='0' AND K='1') THEN TEMP<='0'; ELSIF (J='1' AND K='0') THEN TEMP<='1'; ELSIF (J='1' AND K='1') THEN TEMP<= 11 ; END IF; END IF;
END PROCESS; Q<=TEMP; END ;
(五) 在下面横线上填上合适的语句,完成计数器的设计。
说明:设电路的控制端均为高电平有效,时钟端CLK,电路的预置数据输入端为4位D,计数输出端也为4位Q,带同步始能EN、异步复位CLR和预置控制LD的六进制减法计数器。 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT6 IS PORT(EN,CLR,LD,CLK:IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CNT6;
ARCHITECTURE BEHA OF CNT6 IS
SIGNAL QTEMP:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
PROCESS(CLK,CLR,LD) BEGIN
IF CLR='1' THEN QTEMP<=\ --CLR=1清零 ELSIF (CLK'EVENT AND CLK='1') THEN --判断是否上升沿
IF LD='1' THEN QTEMP<= 12 ; --判断是否置位
ELSIF EN='1' THEN --判断是否允许计数 IF QTEMP=\ 13 ; --等于0,计数值置5 ELSE QTEMP<= 14 ; --否则,计数值减1 END IF;
END IF; END IF; Q<=QTEMP; END PROCESS; END BEHA;
(六) 在下面横线上填上合适的语句,完成状态机的设计。
说明:设计一个双进程状态机,状态0时如果输入”10”则转为下一状态,否则输出”1001”; 状态1时如果输入”11”则转为下一状态,否则输出”0101”;状态2时如果输入”01”则转为下一状态,否则输出”1100”; 状态3时如果输入”00”则转为状态0,否则输出”0010”。复位时
. . . w
. .. . .
为状态0。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MOORE1 IS
PORT (DATAIN: IN STD_LOGIC_VECTOR(1 DOWNTO 0); CLK, RST:IN STD_LOGIC; Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END;
ARCHITECTURE ONE OF MOORE1 IS TYPE ST_TYPE IS (ST0, ST1, ST2, ST3); --定义4个状态 SIGNAL CST, NST: ST_TYPE; --定义两个信号(现态和次态) SIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
REG: PROCESS(CLK, RST) --主控时序进程 BEGIN
IF RST='1' THEN CST<= 15 ; --异步复位为状态0 ELSIF CLK'EVENT AND CLK='1' THEN
CST<= 16 ; --现态=次态 END IF; END PROCESS;
COM: PROCESS(CST, DATAIN) BEGIN CASE CST IS WHEN ST0 => IF DATAIN=\ ELSE NST<=ST0; Q1<=\ WHEN ST1 => IF DATAIN=\ ELSE NST<=ST1; Q1<=\ WHEN ST2 => IF DATAIN=\ ELSE NST<=ST2; Q1<=\ WHEN ST3 => IF DATAIN=\ ELSE NST<=ST3; Q1<=\
17 ; END PROCESS; Q<=Q1; END;
(七) 在下面横线上填上合适的语句,完成减法器的设计。 由两个1位的半减器组成一个1位的全减器 --1位半减器的描述 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY HALF_SUB IS
. . . w
. .. . .
PORT(A,B : IN STD_LOGIC; DIFF,COUT : OUT STD_LOGIC); END HALF_SUB;
ARCHITECTURE ART OF HALF_SUB IS BEGIN
COUT<= 18 ; --借位 DIFF<= 19 ; --差 END ;
--1位全减器描述 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY FALF_SUB IS PORT(A,B,CIN: IN STD_LOGIC; DIFF,COUT : OUT STD_LOGIC); END FALF_SUB;
ARCHITECTURE ART OF FALF_SUB IS COMPONENT HALF_SUB PORT(A,B : IN STD_LOGIC; DIFF,COUT : OUT STD_LOGIC); END COMPONENT;
20 T0,T1,T2:STD_LOGIC; BEGIN U1: HALF_SUB PORT MAP(A,B, 21 ,T1); U2: HALF_SUB PORT MAP(T0, 22 , 23 ,T2); COUT<= 24 ; END ;
(八) 在下面横线上填上合适的语句,完成分频器的设计。 说明:占空比为1:2的8分频器 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CLKDIV8_1TO2 IS PORT(CLK:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC ); END CLKDIV8_1TO2;
ARCHITECTURE TWO OF CLKDIV8_1TO2 IS
SIGNAL CNT:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL CK:STD_LOGIC; BEGIN
PROCESS(CLK) BEGIN
IF RISING_EDGE( 25 ) THEN IF CNT=\
. . . w