三、在下面横线上填上合适的 VHDL 关键词(每空2分,共10分)
1、完成 2 选 1 多路选择器的设计。 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
1 MUX21 IS ENTITY PORT(SEL:IN STD_LOGIC; A,B:IN STD_LOGIC; Q: OUT STD_LOGIC ); END MUX21; BEGIN
2 BHV OF MUX21 IS ARCHITECTURE Q<=A WHEN SEL=’1’ ELSE B; END BHV;
2、完成 BCD7 段 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 BEGIN
IF BCD_LED=\"0000\" THEN LEDSEG<=\"0111111\"; ELSIF BCD_LED=\"0001\" THEN LEDSEG<=\"0000110\";
ELSIF BCD_LED=\"0010\" THEN LEDSEG<= 4 ; 1011011 ELSIF BCD_LED=\"0011\" THEN LEDSEG<=\"1001111\"; ELSIF BCD_LED=\"0100\" THEN LEDSEG<=\"1100110\"; ELSIF BCD_LED=\"0101\" THEN LEDSEG<=\"1101101\"; ELSIF BCD_LED=\"0110\" THEN LEDSEG<=\"1111101\"; ELSIF BCD_LED=\"0111\" THEN LEDSEG<=\"0000111\"; ELSIF BCD_LED=\"1000\" THEN LEDSEG<=\"1111111\"; ELSIF BCD_LED=\"1001\" THEN LEDSEG<=\"1101111\"; ELSE LEDSEG<= 5 ; NULL
END IF; END PROCESS; END BEHAVIOR;
四、阅读下列 VHDL 程序,画出原理图(RTL 级)(10分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY HAD IS
PORT ( a : IN STD_LOGIC; b : IN STD_LOGIC; c : OUT STD_LOGIC; d : OUT STD_LOGIC); END ENTITY HAD;
ARCHITECTURE fh1 OF HAD IS BEGIN
c <= NOT(a NAND b);
d <= (a OR b)AND(a NAND b); END ARCHITECTURE fh1;
五、根据以下Verilog程序代码,画出模块图,并说明该系统实现什么功能。(10分)
module MUX (C, D, E, F, S, MUX_OUT); input C, D, E, F; input [1:0] S;
output MUX_OUT; reg MUX_OUT;
always @(C or D or E or F or S) begin case (S)
2′b00 : MUX_OUT = C; 2′b01 : MUX_OUT = D; 2′b10 : MUX_OUT = E; default : MUX_OUT = F; endcase end
endmodule
答:四选一多路选择器,C、D、E、F是四个数据输入端,MUX_OUT是数据输出端,S[1:0]是选择信号输入端,s取00时,pout=c;s取01时,pout=d;s取10时,pout=e;s取其他值,pout=f;
六、设计一个JK触发器,其元件符号如图所示,其中J、K是数据输入端,CLR是复位控制输入端,当CLR=0时,触发器的状态被置为0态;CLK是时钟输入端;Q和QN是触发器的两个互补输出端。(10分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY myjkff IS
PORT(j,k,clr:IN STD_LOGIC; clk:IN STD_LOGIC;
q,qn:BUFFER STD_LOGIC); END myjkff;
ARCHITECTURE one OF myjkff IS BEGIN
PROCESS(j,k,clr,clk)
VARIABLE jk:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN jk:=(j & k);
IF clr='0' THEN q<='0'; qn<='1'; ELSIF clk'EVENT AND clk='0' THEN CASE jk IS
WHEN \"00\" => q <=q; qn <= qn; WHEN \"01\" => q <= '0'; qn <= '1'; WHEN \"10\" => q <= '1'; qn <= '0';
WHEN \"11\" => q <= NOT q; qn <= NOT qn; WHEN OTHERS => NULL; END CASE ; END IF;
END PROCESS; END one;
七、采用状态机方法,设计一个串行数据检测器check,其输入为串行码in,在连续输入4个或4个以上的1时out输出1,否则输出0 (10分)
三、在下面横线上填上合适的语句,完成 10 位二进制加法器电路的设计。(本题10分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ 1 .ALL; unsigned
ENTITY ADDER1 IS
PORT(A,B:IN STD_LOGIC_VECTOR(9 DOWNTO 0); COUT:OUT STD_LOGIC;
SUM:OUT STD_LOGIC_VECTOR(9 DOWNTO 0)); END;
2 JG OF ADDER1 IS ARCHITECTURE
SIGNAL ATEMP: STD_LOGIC_VECTOR(10 DOWNTO 0); SIGNAL BTEMP: STD_LOGIC_VECTOR(10 DOWNTO 0);
SIGNAL SUMTEMP: STD_LOGIC_VECTOR 3 DOWNTO 0); (10 BEGIN
ATEMP<=’0’& A; BTEMP<=’0’& B; SUMTEMP<= 4 ; (ATEMP+BTEMP)
SUM<=SUMTEMP(9 DOWNTO 0); COUT<= 5 ; (SUMTEMP(10)) END JG;
四、阅读下列Verilog HDL程序,画出原理图(RTL级)(10分)
module example_4_11(y,a,b,c); input a,b,c; output y; wire s1,s2,s3; not (s1,a); nand (s2,c,s1); nand (s3,a,b); nand (y,s2,s3); endmodule
五、阅读下列Verilog HDL源程序,画出元件符号,说明模块功能,和各管脚功能。(10分)
module cnt8(q,cout,d,load,en,clk,clr); input [7:0] input
d;
q;
load,en,clk,clr;
cout;
output reg[7:0] output reg
begin
if (clr) q= 0;
else if (load)
always @(posedge clk)
q =d;
else if (en) begin q = q+1;
if (q==255) cout = 1; else cout=0;end
end
endmodule
该模块是8位二进制加法计数器,D[7..0]是8位数据输入端,load是预置控制输入端,en是使能控制输入端,clk是时钟输入端,clr是清除输入端,q[7..0]是8位数据输出端,cout是进位输出端。
六、根据已给出的二-十(BCD)进制优先权编码器功能表,试写出其VHDL程序。(10分)
二-十(BCD)进制优先权编码器功能表 输入 I1 1 X X X X X X X X 0 I2 1 X X X X X X X 0 1 I3 1 X X X X X X 0 1 1 I4 1 X X X X X 0 1 1 1 I5 1 X X X X 0 1 1 1 1 I6 1 X X X 0 1 1 1 1 1 I7 1 X X 0 1 1 1 1 1 1 I8 1 X 0 1 1 1 1 1 1 1 I9 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 输出 Y3 Y2 Y1 Y0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 三、根据以下VHDL程序代码画出由实体unknown和结构体netlist生成系统的连接图,并说明该系统实现什么功能(可以用真值表说明)。(共20分)
library IEEE;
use IEEE.std_logic_1164.all; entity dff is
port(clk, D : in std_logic; Q : out std_logic); end dff;
architecture behave of dff is begin
if clk’event and clk=’1’ then Q<=D; end if; end behave;
library IEEE;
use IEEE.std_logic_1164.all; entity unknown is
port(clk, A : in std_logic; B : out std_logic); end shift;
architecture netlist of unknown is component dff
port(clk, D : in std_logic; Q : out std_logic); end component;
signal Z : std_logic_vector(0 to 2); begin
DFF1: dff port map (clk, A, Z(0) ); DFF2: dff port map (clk, Z(0), Z(1) ); DFF3: dff port map (clk, Z(1), Z(2) ); DFF4: dff port map (clk, Z(2), B ); end netlist;
四、判断下列程序是否有错误,如有则指出错误所在,并给出完整程序。(10分)
library ieee;
use ieee.std_logic_1164.all; ENTITY mux21 is
port(a,b,sel:in std_logic; y:out std_logic;(去掉;)); end sam2(改成mux21);
architecture one of mux21(去掉下划线) is
BEGIN
IF sel=’0’ THEN y:=a(改成y<=a); ELSE y:=b(改为y<=b); End if;
End two(改成结构体名one);
五、已知电路原理图如下,请用VHDL语言编写其程序。(10分)
解:
library ieee;
use ieee.std_logic_1164.all; ENTITY mux21 is port(a,b,s:in bit; y:out bit); end mux21;
architecture one of mux21 is single d,e:bit; begin
d<=a and (not)s; e<=b and s; y<=d or e; end one;
六、解释程序 (10分)
LIBRARY ieee; 定义元件库 USE ieee.std_logic_1164.ALL; 定义数据库 USE ieee.std_logic_arith.ALL; USE ieee.std_logic_unsigned.ALL;
ENTITY ram_8 IS 定义实体 PORT 定义端口 (A : IN std_logic; din : IN std_logic_vector(7 DOWNTO 0); din为输入端口, dout : OUT std_logic_vector(7 DOWNTO 0); adr_8 : INOUT std_logic_vector(7 DOWNTO 0));八位信号双向端口 END ram_8;
七、根据以下Verilog程序代码,说明该系统实现什么功能。(10分)
module MUX (C, D, E, F, S, MUX_OUT); input C, D, E, F; input [1:0] S;
output MUX_OUT; reg MUX_OUT;
always @(C or D or E or F or S) begin case (S)
2′b00 : MUX_OUT = C; 2′b01 : MUX_OUT = D; 2′b10 : MUX_OUT = E; default : MUX_OUT = F; endcase end
endmodule
答:四选一多路选择器,C、D、E、F是四个数据输入端,MUX_OUT是数据输出端,S[1:0]是选择信号输入端,s取00时,pout=c;s取01时,pout=d;s取10时,pout=e;s取其他值,pout=f;
因篇幅问题不能全部显示,请点此查看更多更全内容