当前位置:首页 > EDA程序设计试题及答案
PORT( en, select : IN STD_LOGIC ;
A, B : IN STD_LOGIC_VECTOR(6 DOWNTO 0 ) ; Y : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)
END aaa ; (4?) ARCHITECTURE ar OF aaa IS BEGIN
PROCESS(en, select ) BEGIN
IF en=?0? THEN Y<=”ZZZZZZZ”; ELSIF en=?1? THEN
IF select=?0? THEN Y<=A; ELSIF select=?1? THEN Y<=B; END IF; END IF ; END PROCESS ;
END ar ; (5?)
2. 试用VHDL语言编程实现一个M10计数器,要求该计数器有一个时钟输入端clk,一个复位端rst(低电平复位),一个使能端en(高电平时允许计数),一个“计数到”输出端cout,一个4位二进制当前计数值输出口q;cout端仅当计数满的一个时钟周期输出高电平,其余时刻全保持低电平。 2. M10计数器参考程序:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all;
USE ieee.std_logic_unsigned.all; (1?) ENTITY aaa IS
PORT(clk, rst, en : IN STD_LOGIC; cout: OUT STD_LOGIC;
q: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END aaa; (4?) ARCHITECTURE bd OF aaa IS BEGIN
PROCESS(clk,reset,en)
BEGIN IF (rst='0') THEN q<=\
ELSIF (clk'event AND clk='1') THEN IF en=?1? THEN
IF (q=9) THEN q<=\ ELSE q<=q+1; END IF; END IF; END IF; END PROCESS;
END bd; (10?)
3.请用VHDL语言编程,用一个状态机模型实现一个七段码LED字符发生器。该电路有一个复位输入端RST,一个时钟输入端CP,一组七段码输出端a~g。在LED上七个段的排列位置如图所示。该电路的功能为,当复位输入端RST为低电平时,输出端口输出全零,无显示;当RST为高电平时,在时钟信号CP的每个上升沿,输出端依次轮流输出5个字符“HAPPY”的七段码(共阴极接法),周而复始。
3. 用VHDL语言编程实现一个LED字符发生器参考程序:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL; ENTITY genc IS PORT( rst, cp : IN STD_LOGIC; a,b,c,d,e,f,g: OUT STD_LOGIC ); END genc;
ARCHITECTURE aa OF genc IS TYPE state IS(s0,s1, s2, s3, s4, s5 ); SIGNAL pstate: state;
SIGNAL dout: STD_LOGIC_VECTOR(6 DOWNTO 0 ); BEGIN
pr1: PROCESS(cp, rst,) BEGIN
IF rst='0' THEN pstate <=s0;
ELSIF (cp'event AND cp='0' ) THEN CASE pstate IS WHEN s0=> pstate <=s1;
WHEN s1=> pstate <=s2;
WHEN s2=> pstate <=s3; WHEN s3=> pstate <=s4; WHEN s4=> pstate <=s5; WHEN s5=> pstate <=s1;
WHEN OTHERS=> pstate <=s0;
END CASE; END IF; END PROCESS; pr2: PROCESS(pstate)
(1?) (1?) 2?) 5?) (( BEGIN
CASE state IS
WHEN s0 => dout<=\ --无显示 WHEN s1 => dout<=\ --“H”
WHEN s2 => dout<=\ --“A” WHEN s3 => dout<=\ --“P” WHEN s4 => dout<=\ --“P” WHEN s5 => dout<=\ --“Y”
WHEN OTHERS=> dout<=\无显示 END CASE;
END PROCESS; (5?)
a<=dout(6); b<=dout(5); c<=dout(4); d<=dout(3); e<=dout(2); f<=dout(1); g<=dout(0); END aa; (1?)
2.试用VHDL语言和进程语句,编程实现一个3-8译码器。 该译码器的功能为,当使能信号EN为低电平时,输出端Y7~Y0全为高电平(没有输出端被选中);当EN为高电平时,每一种ABC的输入状态组合能惟一地选中一路输出(被选中的端输出低电平)。
真值表如下: 输 入 输 出 A B C EN Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 × × × 0 1 1 1 1 1 1 1 1 LIBRARY ieee;
USE ieee.std_logic_1164.ALL; ENTITY ym38 IS PORT( a, b, c, en : IN std_logic; y : OUT std_logic_vector(7 DOWNTO 0 ); ); END ym38; ARCHITECTURE arc38 OF ls273 IS BEGIN PROCESS ( en ) SIGNAL din : std_logic_vector(7 DOWNTO 0 ); BEGIN din<=a&b&c&en; WITH din SELECT y<= ”11111110” WHEN “0001”;
2?
1?
3?
1? 1? 1? 1?
END END arc38;
”11111101” ”11111011” ”11110111” ”11101111” ”11011111” ”10111111” ”01111111” ”11111111” PROCESS;
WHEN WHEN WHEN WHEN WHEN WHEN WHEN WHEN “0011”; “0101”; “0111”; “1001”; “1011”; “1101”; “1111”; OTHERS;
5?
1. 试用VHDL语言编程实现一个多路开关。
该电路的功能为,当选择端S0和S1为不同状态组合时,如果使能信号EN为电平,输出端X和Y分别与不同的输入通道A0B0、A1B1、A2B2和A3B3接通并保持,当EN为低电平时,X、Y输出为高阻态。真值表如下:
输 入 S1 S0 EN A0 B0 A1 B1 0 0 1 × × × × 0 1 1 × × × × 1 0 1 × × × × 1 1 1 × × × × × × 0 × × × × 1. 多路开关的参考程序如下: A2 × × × × × B2 × × × × × A3 × × × × × B3 × × × × × 输 出 X Y A0 B0 A1 B1 A2 B2 A3 B3 Z Z LIBRARY ieee;
USE ieee.std_logic_1164.ALL; ENTITY mulkey IS PORT( s0,s1,en, a0,b0,a1,b1,a2,b2,a3,b3 : IN std_logic; x, y : OUT std_logic_vector(7 DOWNTO 0 ); ); END mulkey; ARCHITECTURE armk OF mulkey IS
SIGNAL sel : std_logic_vecter (1 DOWNTO 0 )
BEGIN
sel<=s1&s0;
PROCESS (en ) BEGIN IF (en=?0?) THEN x<=?Z?; y<=?Z?; ELSEIF (sel=”00”) THEN x<=a0 ; y<=b0; ELSEIF (sel=”01”) THEN x<=a1 ; y<=b1; ELSEIF (sel=”10”) THEN x<=a2; y<=b2;
ELSEIF (sel=”11”) THEN x<=a3 ; y<=b3; END IF;
END PROCESS;
END
armk;
3?
2? ?
共分享92篇相关文档