EDA技术复习题
更新时间:2023-10-24 09:25:01 阅读量: 综合文库 文档下载
- eda技术及应用推荐度:
- 相关推荐
这是一份vhdl的复习题,考试题大多数都来自此处,
一、 EDA名词解释
1、 ASIC:专用集成电路(Application Specific Integrated Circuits) 2、 EDA:电子设计自动化(Electronic Design Automation) 3、 PROM:可编程只读存储器(Programmable Read Memory) 4、 IP:知识产权核(Intellectual Property ) 5、 SOC: 片上系统(System On Chip)
6、 VHDL:超高速集成电路硬件描述语言(VHSIC Hardware Description Language)。
7、 RTL: 寄存器传输级(Register Transport Level)
8、 SOPC:可编程片上系统(System On Programmable Chip) 9、 PLD:可编程逻辑器件(Programmable Logic Array) 10、 GAL:通用阵列逻辑(Geniric Array Logic)
11、 FPGA:现场可编程门阵列(Field Programmable Gate Array ) 12、 CPLD:复杂可编程逻辑器件(Complex Programmable Logic Device)
1
二、 简答题
1、 简述VHDL程序的基本结构。 库、程序包、实体、结构体、配置 2、 子程序分为那两类,其结构为什么。
子程序有两种类型,即过程(PROCEDURE)和函数(FUNCTION)。 FUNCTION 函数名(参数表) RETURN 数据类型 --函数首 FUNCTION 函数名(参数表)RETURN 数据类型 IS -- 函数体
[说明部分 ] BEGIN
顺序语句 ;
END FUNCTION 函数名;
PROCEDURE 过程名(参数表) -- 过程首 PROCEDURE 过程名(参数表) IS -- 过程体
[说明部分]
BIGIN
顺序语句;
END PROCEDURE 过程名;
3、 信号与变量的赋值有何区别?。
信号延时赋值,变量立即赋值;
信号的代入使用<=,变量的代入使用:=;
信号在实际的硬件当中有对应的连线,变量没有 4、 可编程器件分为哪些类?
答:一类是集成度较低的,早期出现的PROM、PLD、PAL、GAL,可用的逻辑门数大约在500门以下,称为简单PLD。
另一类是芯片集成度较高的,如现在大量使用的CPLD和FPGA器件,称为复杂PLD。
5、 CASE语句使用当中的注意事项。 (1)条件句中的选择值必在表达式的取值范围内。
(2)除非所有条件句中的选择值能完整覆盖CASE语句中表达式的取值,否则最末一个条件句中的选择必须用\表示,它代表己给的所有条件句中未能列出的其它可能的取值。关键词OTHERS只能出现一次,目只能作为最后一种条件取值。使用OTHERS的目的是为了使条件句中的所有选择值能涵盖表达式的所有取值,以免综合器会插入不必要的锁存器。这一点对于定义为STD_ LOGIC和STD_ LOGIC_VECTOR数据类型的值尤为重要,因为这些数据对象的取值除了1和0以外,还可能有其它的取值,如高阻态Z、不定态X等。
(3) CASE语句中每一条件句的选择值只能出现一次,不能有相同选择值的条件语句出现。
2
(4) CASE语句执行中必须选中,目只能选中所列条件语句中的一条。这表明CASE语句中至少要包含一个条件语句。 6、 赋值语句分哪些类,分别写出一句赋值语句。 信号赋值语句,S<= 变量赋值语句,V?
7、 数据对象有哪些种,分别写出定义这些数据对象的一般表述格式。 Constant(常量)在程序中不可以被赋值 Variable(变量)在程序中可以被赋值(用“:=”),赋值后立即变化为新值。 Signal(信号)在程序中可以被赋值(用“<=”),但不立即更新,当进程挂起后,才开始更新。
8、 简述进程语句的使用要点? [进程名:]
process[(触发信号列表)] [定义语句;] begin
[串行处理语句sequential statement;] end process
PROCESS...END PROCESS
9、 写出VHDL常用的顺序语句的名称。 赋值语句
流程控制语句 等待语句
子程序调用语句 返回语句 空操作语句
10、 VHDL语言中的逻辑操作符有那些?
逻辑运算符AND、OR、NAND、NOR、XOR、XNOR及NOT 11、 使用原理图输入设计功能的优势何优点?
与传统的数字电路实验相比,Quartus提供原理图设计功能具有不可比拟的优势和先进性:
1设计者不必具备许多诸如编程技术、硬件描述语言等知识就能迅速○
设计入门,完成大规模的电路系统设计
2能进行任意层次的数字系统设计(传统的数字电路实验只能完成单○一层次的设计);
3能对系统中的任一层次,或任一元件的功能进行精确的时序仿真 ○
4通过时序仿真,能迅速定位电路系统的错误所在,并随时纠正。 ○
3
5能对设计方案进行随时更改,并储存设计工程中所有电路和测试文○件入档;
6通过编译和下载,能在FPGA或CPLD上对设计项目随时进行硬件○测试验证;
7如果使用FPGA和配置编程方式,将不会有损坏和损耗的问题 ○
8符合现代电子设计技术规范。 ○
12、 VHDL的操作符有那几大类?每一类的操作符分别是什么?每一类操作符可以对那些数据进行操作(运算)?
在VHDL中有四类操作符即逻辑操作符(Logical Operator)、关系操作符(Relational Operator)、算术操作符(Arithmetic Operator)和符号操作符(Sign Operator)。前三类操作符是完成逻辑和算术运算的最基本的操作符单元。 13、 标准逻辑位数据类型常用的数值有哪几种? 'U'--Uninitialized未初始化的 'X'--Forcing Unknown强未知的 '0'--Forcing 0强0 '1'--Forcing 1强1
'Z'--High Impedance 高阻态
'W'--Weak Unknown弱未知的 'L'--Weak 0 弱0 'H'--Weak 1弱1 '-'--Don't care忽略
14、 在VHDL语言中常见的数据类型有那些? VHDL中的数据类型可以分成四大类。 标量型(Scalar Type)
复合类型(Composite Type) 存取类型(Access Type) 文件类型(Files Type)
15、 实体部分的端口模式有四个类型。
IN模式:IN定义的通道确定为输入端口,并规定为单向只读模式,可以通过此端口将变量(Variable)信息或信号(Signal)信息读入设计实体中。
OUT模式:OUT定义的通道确定为输出端口,并规定为单向输出模式,可以通过此端口将信号输出设计实体,或者说可以将设计实体中的信号向此端口赋值。
INOUT模式:INOUT定义的通道确定为输入输出双向端口,即从端口的内部看,可以对此端口进行赋值,也可以通过此端口读入外部的数据信息;而从端口的外部看,信号既可以从此端口流出,也可以向此端口输入信号。INOUT模式包含了IN,OUT和BUFFER二种模式,因此可替代其中任何一种模式,但为了明确程序中各端口的实际任务,一般不作这种替代。
4
BUFFER模式:BUFFER定义的通道确定为具有数据读入功能的输出端口,它与双向端口的区别在于只能接受一个驱动源。 16、 VHDL语句中顺序描述语句有哪几种? 赋值语句
流程控制语句 等待语句
子程序调用语句 返回语句 空操作语句
17、 用WAIT语句设置4种不同的条件分别是什么?
对于不同的结束挂起条件的设置,WAIT语句有以下四种不同的语句格式。
WAIT; -- 第一种语句格式 WAIT ON 信号表; -- 第二种语句格式 WAIT UNTIL 条件表达式; -- 第三种语句格式
WAIT FOR 时间表达式; -- 第四种语句格式, 超时等待语句
18、 常用的if语句有哪几种?写出其书写格式。
A. 门闩
IF条件句Then --第一种IF语句结构 顺序语句 END IF B. 二选一
IF条件句Then --第二种IF语句结构 顺序语句 ELSE 顺序语句 END IF C. 多选择
IF条件句Then --第三种IF语句结构 顺序语句
ELSIF条件句Then 顺序语句 ... ELSE 顺序语句 END IF
D. IF的嵌套 IF条件句Then IF条件句Then ...
END IF END IF
5
19、 如何描述时钟上升沿和下降沿?
时钟脉冲的上升沿的条件可以写为:
IF clock_signal=current_value AND clock_signal?LAST_VALUE AND clock_signal?EVENT
也可以简写为:
IF clock_signal= clock_signal?EVENT AND current_value 时钟脉冲的下降沿的条件可以写为:
IF clock_signal=current_value AND clock_signal?LAST_VALUE AND clock_signal?EVENT
20、 指出信号和变量有哪些区别? 简单的说,信号是全局的,用于结构体中并行语句间数据流的传递;变量则是局部的,他主要用于单个进程中中间变量的存储.
主要用于对暂时数据进行局部存储。
临时数据,没有物理意义只能在Process和Function中定义,并只在其内部有效要使其全局有效,先转换为Signal。
用 := 进行赋值
variable result : std_logic := '0'; 变量说明的格式:
VARIABLE 变量名:数据类型 约束条件:=表达式; 例:VARIABLE X,Y:INTEGER;
VARIABLE C:INTEGER RANGE 0 TO 255:=10;(表示变量C的数据类型是整型,变量范围从0到255,初始值为10。)
变量只能在进程语句、函数语句和过程语句结构中使用,它是一个局部量。在仿真过程中,它不像信号那样,到了规定的仿真时间才进行赋值,变量是立即生效的。
信号是抽象的电子电路内部硬件连接。它除了没有数据流动方向说明以外,其它性质几乎和前面所述的端口概念一致。信号通常在构造体、包集合和实体内说明。
信号说明的格式:
SIGNAL 信号名;数据类型 约束条件:=表达式; 例:SIGNAL a,b,c:STD_LOGIC;
SIGNAL COUNT_2:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL S_CLK:BIT:='0'; 信号(Signals)
代表连线,Port也是一种信号。
没有方向性,可给它赋值,也可当作输入 在Entity中和Architecture中定义
设定的初始值在综合时没有用,只是在仿真时在开始设定一个起始值。用<=进行赋值。
信号和变量值的代入不仅形式不同,而且其操作过程也不同。在变量的赋值语句中,该语句一旦被执行,其值立即被赋予变量。在执行下一条语句时,该变量的值就为上一句新赋的值。变量赋值符为“:=”。信号代入语句采用“<=”代入符,该语句即使被执行也不会使信号立即发生代入。下一条语句执行时,仍使用原来的信号值。由于信号代入语句是同时进行处理的,
6
因此,实际代入过程和代入语句的处理是分开进行的。
21、 信号赋值语句在什么情况下作为并行语句?在什么情况下作顺序语句?信号赋值和变量赋值符号分别是什么?两种赋值符号有什么区别? 信号赋值语句在进程外作并行语句,并发执行,与语句所处的位置无关。信号赋值语句在进程内或子程序内做顺序语句,按顺序执行,与语句所处的位置有关。
信号赋值符号为“<=”变量赋值用“:=”。信号赋值符号用于信号赋值动作,不立即生效。变量,赋值符号用于变量赋值动作,立即生效。
22、 进程的敏感信号表指的是什么?简述敏感信号表在进程中的作用? 进程的“敏感信号表”也称敏感表,是进程的激活条件,可由一个或多个信号组成,各信号间以“,”号分隔。当敏感信号表中的任一个信号有事件发生,即发生任意变化,此时,进程被激活,进程中的语句将从上到下逐句执行一遍,当最后一条语句执行完毕之后,进程即进入等待挂起状态,直到下一次敏感表中的信号有事件发生,进程再次被激活,如此循环往复。 23、 什么是库、程序包、子程序、过程调用和函数调用? 库和程序包用来描述和保存元件、类型说明和子程序等,以便在其它设计中通过其目录可查询、调用。子程序由过程和函数组成。在子程序调用过程中,过程能返回多个变量,函数只能返回一个变量。若子程序调用的是一个过程,就称为过程调用,若子程序调用的是一个函数,则称为函数调用。过程调用、函数调用都是子程序调用。
24、 简述WHEN_ELSE条件信号赋值语句和IF_ELSE顺序语句的异同。 答:WHEN_ELSE条件信号赋值语句中无标点,只有最后有分号;必须成对出现;是并行语句,必须放在结构体中。
IF_ELSE顺序语句中有分号;是顺序语句,必须放在进程中。
三、 综合题
1、 完成
A. 解释带有下划线的语句。 B. 画出该程序的原理图符号。 C. 说明该程序逻辑功能。
D. 改用WITH_SELECT_WHEN语句编写下列程序。
Library ieee;
Use ieee.std_logic_1164.all; 定义元件库 entity qk_11 is
port( a,b,c,d,en:in std_logic;
s:in std_logic_vector(1 downto 0); 输入信号s是两位的输入总线 op:out std_logic ); end qk_11;
architecture ar_1 of qk_11 is
signal f:std_logic_vector(2 downto 0);
7
begin
f<=en&s; 将输入信号en和s连接赋值给f
process (f) 敏感信号f的变化将启动进程 process begin
case f is
when\ when\ when\
when others=>op<=d; 其他情况,将输入信号d赋值给op end case; end process; end ar_1;
逻辑功能是:带有使能端en的四选一数据选择器。 用WITH_SELECT_WHEN语句编写上述程序: Library ieee;
Use ieee.std_logic_1164.all; entity qk_11 is
port( a,b,c,d,en:in std_logic;
s:in std_logic_vector(1 downto 0); op:out std_logic ); end qk_11;
architecture ar_1 of qk_11 is
signal f:std_logic_vector(2 downto 0); begin f<=en&s;
with f select
op<=a when \ b when \ c when \ d when others; end ar_1;
2、 以下是一个模为24(0~23)的8421BCD码加法计数器VHDL描述,请补充完整
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY tb IS
PORT ( CLK : IN STD_LOGIC ;
8
SHI, GE : OUT INTEGER RANGE 0 TO 9 ) ; END ;
ARCHITECTURE bhv OF tb IS
SIGNAL SHI1,GE1 : INTEGER RANGE 0 TO 9; BEGIN
PROCESS (CLK) BEGIN
IF CLK'EVENT AND CLK='1' then IF GE1 = 9 THEN GE1 <= 0 ;
SHI1<=SHI1+1;
ELSIF SHI1=2 AND GE1=3 THEN SHI1<=0; GE1<=0; ELSE
GE1 <= GE1+1; END IF; END IF;
END PROCESS ; GE <= GE1; SHI <=SHI1; END bhv;
3、 下面程序是参数可定制带计数使能异步复位计数器的VHDL描述,试补充完整。
-- N-bit Up Counter with Load, Count Enable, and -- Asynchronous Reset library ieee;
use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use IEEE.std_logic_arith.all;
entity counter_n is
generic (width : integer := 8);
port(data : in std_logic_vector (width-1 downto 0); load, en, clk, rst : in std_logic; q : out std_logic_vector (width - 1 downto 0)); end counter_n;
architecture behave of counter_n is
signal count : std_logic_vector (width-1 downto 0); begin
process(clk, rst) begin if rst = '1' then
9
count <= (others => ?0?); ―― 清零 elsif clk?event and clk = ?1? then ―― 边沿检测 if load = '1' then count <= data; elsif en = '1' then count <= count + 1; end if; end if; end process; q <= count; end behave;
4、 补全下列六进制计数器cnt6程序 (10分)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY cnt6 IS
PORT (reset,en,clk:IN STD_LOGIC; carry:OUT STD_LOGIC;
q:OUT STD_ULOGIC_VECTOR(2 DOWNTO 0)); END cnt6;
ARCHITECTURE rtl OF cnt6 IS
SIGNAL qs:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL ca:STD_LOGIC; BEGIN
PROCESS(clk)
VARIABLE q6:INTEGER; BEGIN
IF(clk'EVENT AND clk = '1') THEN
END IF;
qs<=CONV_STD_LOGIC_VECTOR(q6,3); q<=TO_STDULOGICVECTOR(qs); END PROCESS; PROCESS(ca,en) BEGIN
carry<=ca AND en; END PROCESS; END rtl;
5、 补全以下二选一VHDL程序(本题10分) Entity mux is
port(d0,d1,sel:in bit;
10
q:out BIT );
end mux;
architecture connect of MUX is signal tmp1, TMP2 ,tmp3:bit; begin
cale:block begin
tmp1<=d0 and sel;
tmp2<=d1 and (not sel)
tmp3<= tmp1 and tmp2; q <= tmp3; end block cale;
end CONNECT ;
6、 根据下表填写完成一个3-8线译码器的VHDL程序(10分)。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY decoder_3_to_8 IS
PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;
y:OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END decoder_3_to_8;
ARCHITECTURE rtl OF decoder_3_to_8 IS
SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0); BEGIN
indata <= c & b & a; PROCESS (indata,g1,g2a,g2b) BEGIN
IF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THEN CASE indata IS
WHEN \ WHEN \ WHEN \11111011\ WHEN \
11
WHEN \ WHEN \ WHEN \110\ WHEN \
WHEN OTHERS=> y <= \XXXXXXXX\ END CASE; ELSE
y <= \11111111\ END IF; END PROCESS; END rtl;
7、 填写完成一个8-3线编码器的VHDL程序(16分)。 Library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
entity eight_tri is port( b: in std_logic_vector(7 downto 0); en: in std_logic; y: out std_logic_vector(2 downto 0) );
end eight_tri;
architecture a of eight_tri is
signal sel: std_logic_vector(8 downto 0); begin
sel<=en & b;
y<= “000” when (sel=”100000001”)else “001” when (sel=”100000010”)else “010” when (sel=”100000100”)else “011” when (sel=”100001000”)else “100” when (sel=”100010000”)else “101” when (sel=”100100000”)else “110” when (sel=”101000000”)else “111” when (sel=”110000000”)else “zzz”; end a;
12
16)(
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
entity full_add is port ( a,b: in std_logic_vector (3 downto (2)
carr: inout std_logic_vector (4 downto 0); sum: out std_logic_vector (3 downto 0) );
end full_add;
architecture full_add_arch of full_add is component adder port ( a,b,c: in std_logic; carr: inout std_logic; sum: out std_logic );
end component; begin
carr(0)<='0';
u0:adder port map(a(0),b(0),carr(0),carr(1),sum(0)); u1:adder port map(a(1) , b(1),carr(1),carr(2),sum(1)); u2:adder port map(a(2),b(2),carr(2),carr(3),sum(2)); u3:adder port map(a(3),b(3),carr(3),carr(4) , sum(3)); end full_add_arch;
8、 补充完整如下代码,使之完成4状态不断循环。(本题10分) ARCHITECTURE arc OF ss IS
type states is ( st0,st1,st2,st3 ); signal outc: states; BEGIN
PROCESS(clk) BEGIN IF reset='1' then outc <=st0 ;
13
0);
elsif clk'event and clk='1' then CASE outc IS
WHEN st0 => outc <= st1; WHEN st1 => outc <= st2; WHEN st2 => outc <= st3; WHEN st3 => outc <= st0; WHEN OTHERS => outc <=st0; END CASE; end if; END PROCESS; END arc;
9、 根据一下四选一程序的结构体部分,完成实体程序部分(本题8分) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; entity MUX4 is
port( s: in std_logic_vector(1 downto 0); d: in std_logic_vector(3 downto 0); y: out std_logic ); end MUX4; architecture behave of MUX4 is begin process(s) begin
if (s=\ y<=d(0); elsif (s=\ y<=d(1); elsif (s=\ y<=d(2); elsif (s=\ y<=d(3); else null; end if; end process; end behave;
14
四、 编程题
1、 用IF语句编写一个二选一电路,要求输入a、b, sel为选择端,输出q。(本题10分)
Entity sel2 is Port (
a,b : in std_logic; sel : in std_logic; q : out std_logic );
End sel2;
Architecture a of sel2 is begin
if sel = ?0? then q <= a; else q <= b; end if; end a;
2、 填写完成一个8-3线编码器的真值表(5分),并写出其VHDL程序(10分)。
en 1 1 1 1 1 1 1 1 0 8 -3线编码器真值表 b 00000000 00000010 00000100 00001000 00010000 00100000 01000000 10000000 xxxxxxxx y0y1y2 000 001 010 011 100 101 110 111 高阻态
entity eight_tri is port( b: in std_logic_vector(7 downto 0); en: in std_logic; y: out std_logic_vector(2 downto 0) );
end eight_tri;
15
architecture a of eight_tri is
signal sel: std_logic_vector(8 downto 0); begin
sel<=en & b;
y<= “000” when (sel=”100000001”)else “001” when (sel=”100000010”)else “010” when (sel=”100000100”)else “011” when (sel=”100001000”)else “100” when (sel=”100010000”)else “101” when (sel=”100100000”)else “110” when (sel=”101000000”)else “111” when (sel=”110000000”)else “zzz”; end a;
3、 试用VHDL描述一个外部特性如图所示的D触发器。(10分)
参考程序如下: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY mydff IS
PORT(CLK:IN STD_LOGIC; D:IN STD_LOGIC; Q:OUT STD_LOGIC); END;
ARCHITECTURE bhv OF mydff IS BEGIN
PROCESS(CLK) BEGIN
IF CLK'EVENT AND CLK='1' THEN Q<=D; END IF; END PROCESS; END;
4、 下图为某一状态机对应的状态图,试用VHDL语言描述这一状态机。(18分)
16
其它/00001/1001S0S1其它/10010/0000其它/1111S30/1100其它/11001/1111S2
参考程序如下: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY FSM2 IS
PORT ( clk,reset,in1 : IN STD_LOGIC;
out1 : OUT STD_LOGIC_VECTOR(3 downto 0)); END;
ARCHITECTURE bhv OF FSM2 IS TYPE state_type IS (s0, s1, s2, s3); SIGNALcurrent_ state,next_state: state_type; BEGIN
P1:PROCESS(clk,reset) BEGIN
IF reset = ‘1’ THEN current_state <= s0; ELSIF clk='1' AND clk'EVENT THEN
current_state <=next_state; END IF;
END PROCESS;
P2:PROCESS(current_state) BEGIN
case current_state is
WHEN s0 => IF in1=‘1’THEN next_state<=s1; ELSE next_state<=s0; END IF;
WHEN s1 => IF in1='0'THEN next_state<=S2; ELSE next_state<=s1; END IF;
WHEN s2 => IF in1='1'THEN next_state<=S3; ELSE next_state<=s2; END IF;
WHEN s3 => IF in1='0'THEN next_state<=S0;
ELSE next_state<=s3; END IF;
end case;
END PROCESS;
17
p3:PROCESS(current_state) BEGIN
case current_state is
WHEN s0 => IF in1=‘1’THEN out1<=“1001”; ELSE out1<=\ END IF; WHEN s1 => IF in1='0'THEN out1<=\ ELSE out1<=\ END IF; WHEN s2 => IF in1='1'THEN out1<=\ ELSE out1<=\ END IF; WHEN s3 => IF in1='1'THEN out1<=\ ELSE out1<=\ END IF; end case; END PROCESS; end bhv;
5、 数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面四种方式中的两种来描述该数据选择器MUX的结构体。
SEL(1:0)SEL00AIN(1:0)BIN(1:0)COUTA or BA xor BA and BA nor B“XX”MUXCOUT(1:0)011011OTHERS
(a) 用if语句。(b) 用case 语句。 (c) 用when else 语句。 (d) 用with select 语句。
Library ieee;
Use ieee.std_logic_1164.all;
Entity mymux is
Port ( sel : in std_logic_vector(1 downto 0); -- 选择信号输入 Ain, Bin : in std_logic_vector(1 downto 0); -- 数据输入 Cout : out std_logic_vector(1 downto 0) ); End mymux;
Architecture one of mymux is Begin
Process (sel, ain, bin) Begin If sel = “00” then cout <= ain or bin; Elsif sel = “01” then cout <= ain xor bin; Elsif sel = “10” then cout <= ain and bin; Else cout <= ain nor bin; End if; End process;
18
End one;
Architecture two of mymux is Begin
Process (sel, ain, bin) Begin Case sel is when “00” => cout <= ain or bin; when “01” => cout <= ain xor bin; when “10” => cout <= ain and bin; when others => cout <= ain nor bin; End case; End process; End two;
6、 根据下面原理图,写出相应VHDL描述
Library ieee;
Use ieee.std_logic_1164.all; Entity mycir is
Port (ain , bin , clk : in std_logic; Cout : out std_logic); End mycir;
Architecture one of mycir is Signal tb, tc; Begin
Process (clk) begin If clk?event and clk = ?1? then tb <= bin; end if; End process;
Process (clk, tc) begin
If clk = ?1? then cout <= tc;end if; End process; Tc <= ain xor tb; End one;
7、 用两种以上的按照下图设计一个四选一多路选择器
19
8、 使用元件例化语句编写下图所示的顶层文件,其中adder_1为一个由原理图输入法设计的完整的设计实体。
3、已知4位全加器电路原理图如下,请用元件例化语句编写其程序。
9、 在数字显示中,经常使用LED数码管,下面是采用共阳极的7段显示。BCD码输入与LED显示器对应的关系如下表:
D0D1D2D3a(X6)b(X5)c(X4)d(X3)e(X2)f(X1)g(X0)七段数码管afedgbc七段译码器
10、 在数字显示中,经常使用LED数码管,下面是采用共阳极的7段显示。BCD码输入与LED显示器对应的关系如下表:
D0D1D2D3a(X6)b(X5)c(X4)d(X3)e(X2)f(X1)g(X0)七段数码管afedgbc七段译码器
BCD码 0000 0001 0010 0011 0100
数字 0 1 2 3 4 20
显示段 g f e d c b a 1 0 0 O 0 O 0 1 1 l l 0 0 1 0 1 O 0 1 0 0 0 1 1 O O O 0 0 0 1 1 0 0 1
\\ \others; end a;
26、 根据已给出的二-十(BCD)进制优先权编码器功能表,试写出其VHDL程序。(本题15分)
二-十(BCD)进制优先权编码器功能表 输 入 输出 I4 I5 I6 I7 I8 I9 Y3 Y2 Y1 Y0 1 1 1 1 1 1 1 1 1 1 X X X X X 0 0 1 1 0 X X X X 0 1 0 1 1 1 X X X 0 1 1 1 0 0 0 X X 0 1 1 1 1 0 0 1 X 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 I1 1 X X X X X X X X 0 I2 I3 1 1 X X X X X X X X X X X X X 0 0 1 1 1 entity prior is port( d : in std_logic_vector(9 downto 1); q : out std_logic_vector(3 downto 0) ); end prior;
architecture behavior of prior is begin
process(d) begin if d = \ q <= \ elsif d(9) = '0' then q <= \ elsif d(8) = '0' then q <= \ elsif d(7) = '0' then q <= \ elsif d(6) = '0' then q <= \ elsif d(5) = '0' then q <= \ elsif d(4) = '0' then q <= \
26
elsif d(3) = '0' then q <= \ elsif d(2) = '0' then q <= \ elsif d(1) = '0' then q <= \ end if; end process;
五、 程序
1)实验程序
2)课本例题
27
0101 5 0110 6 0111 7 1000 8 1001 9 其它 11、 带允许端的十进制计数器 0 0 1 0 O 1 O O 0 0 0 0 1 0 0 1 0 0 l 1 1 0 0 0 0 0 0 O 0 0 1 O 0 0 0 1 1 1 1 1 1 1 带允许端的十进制计数器真值表 输入端 输出端 clr en clk qd qc qb qa 1 X X 0 0 0 0 0 0 X 不变 不变 不变 不变 0 1 上升沿 计数值加1 12、 用VHDL设计一个三位十进制的,带有使能控制端口enable、异步清零端口rst、同步预置控制端口load和预置数据输入端口date的计数器。
13、 编写一个D触发器的硬件描述语言程序,要求实现上升沿触发。 14、 使用IF语句设计一个带有异步复位和置位、同步预置的4位2进制加法计数器。
15、 带有复位和时钟使能的十进制计数器 16、 设计四选一电路。 17、 设计一个一位全加器。
18、 用VHDL设计四选一多路选择器,其真值表如下表所示。 四选一多路选择器真值表 输 入 端 输 出 端 S1 S0 Q 0 0 D0(8位位宽二进制数) 0 1 D1(8位位宽二进制数) 1 0 D2(8位位宽二进制数) 1 1 D3(8位位宽二进制数) × × 高阻 19、 设计带异步复位和计数使能控制的8位二进制减法计数器。 20、 具有清零端的4位二进制计数器如下图所示,请用VHDL语言编写其程序。
程序: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
21
entity cnt4 is
port(clk:in std_logic; clr:in std_logic;
q:buffer std_logic_vector(3 downto 0)); end cnt4;
architecture behav of cnt4 is begin
process(clr,clk) begin
if clr='1' then q<=\
elsif (clk'event and clk='1') then q<=q+1; end if;
end process; end behav;
21、 用元件例化语句设计如图所示电路。元件为2输入与非门。
LIBRARY ieee;
USE ieee.std_logic_1164.ALL; ENTITY yf4 IS
PORT( A,B,C,D: IN std_logic; Z: OUT std_logic); END yf4;
ARCHITECTURE a OF yf4 IS COMPONENT yf2
PORT (A1,B1: IN std_logic;
C1: OUT std_logic); END COMPONENT; SIGNAL X,Y: std_logic ;
BEGIN
U1:yf2 PORT MAP (A,B,X); U2:yf2 PORT MAP (C,D,Y);
U3:yf2 PORT MAP (A1 => X, C1=>Z, B1 => Y); END a;
22、 编写一个2输入与门的VHDL程序,请写出库、程序包、实体、构造体相关语句,将端口定义为标准逻辑型数据结构(本题10分)
22
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; (2) ENTITY nand2 IS
PORT (a,b:IN STD_LOGIC; (4) y:OUT STD_LOGIC); (6) END nand2;
ARCHITECTURE nand2_1 OF nand2 IS (8) BEGIN
y <= a NAND b; --与y <=NOT( a AND b);等价 (10) END nand2_1; 23、 设计异或门逻辑:(本题20分) 如下异或门,填写右边的真值表。(此项5分)
A 0 0 1 1 B 0 1 0 1 Y 0 1 1 0 其表达式可以表示为:(此项5分) 这一关系图示如下:
b&ab&a
+y试编写完整的VHDL代码实现以上逻辑。可以采用任何描述法。(此项10分)
library ieee;
use ieee.std_logic_1164.all; entity yihuo1 is port( a,b :in std_logic; y :out std_logic ); end yihuo1;
architecture yihuo1_behavior of yihuo1 is begin
23
process(a,b) begin if a=b then y<='0'; else y<='1'; end if;
end process; end yihuo1_behavior; (第2种写法) y<=a xor b;
24、 用IF语句编写一个四选一电路,要求输入d0~d3, s为选择端,输出y。
entity MUX4 is port( s: in std_logic_vector(1 downto 0); d: in std_logic_vector(3 downto 0); y: out std_logic );
end MUX4;
architecture behave of MUX4 is
begin process(s) begin
if (s=\ y<=d(0); elsif (s=\ y<=d(1); elsif (s=\ y<=d(2); elsif (s=\ y<=d(3);
else null; end if; end process;
end behave;
2、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p = q,输出equ为‘0’,否则为‘1’。(本题10分) process(p,q) begin if g='0' then
24
if p = q then equ_tmp <= '0'; else equ_tmp <= '1'; end if; else equ_tmp <= '1'; end if; end process;
25、 填写完成一个3-8线译码器的真值表(5分),并写出其VHDL程序(10分)。
en 1 1 1 1 1 1 1 1 0 3-8译码器的真值表 a2a1a0 y 000 00000001 001 00000010 010 00000100 011 00001000 100 00010000 101 00100000 110 01000000 111 10000000 xxx 00000000
entity tri_eight is port( a: in std_logic_vector (2 downto 0); en: in std_logic; y: out std_logic_vector (7 downto 0) );
end tri_eight;
architecture a of tri_eight is
signal sel: std_logic_vector (3 downto 0); begin
sel(0) <= a(0); sel(1) <= a(1); sel(2) <= a(2); sel(3) <= en; with sel select y <= \ \ \ \\ \\ \\ \\
25
正在阅读:
EDA技术复习题10-24
本科课程教学大纲10-17
《指南录后序》文言文整理10-28
中小学全国学籍管理系统应用培训04-05
写给云02-12
泵站工程施工设计方案11-24
技术协议(自耦降压启动柜)04-16
结对帮扶心得体会04-12
植物生理复习题11-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 复习题
- 技术
- EDA
- 现代市场经济条件下企业营销策略研究
- 四年级蹲踞式跳远教案
- 关于评建整改自评自查工作的通知
- 矫正教育学1
- 高效反渗透HERO工艺介绍
- 鼎龙小学党员“先锋创绩”制度实施方案
- 智能时钟 - 图文
- 社会学概论第一次平时作业答案(仅供参考)
- 进一步营造风清气正发展环境活动工作总结
- 2018-2024年中国防爆工具行业市场行情动态研究报告(目录) - 图文
- 古诗词特色班级方案
- 110KV设计
- 关于预防和解决群众越级赴省进京上访问题的调查与思考
- 兴平市槐巷小学实施素质教育工作汇报
- 湖北工业大学成教网页制作试卷
- 针状焦生产的运用分析
- 小学三年级科学测试题
- 玉溪市药店名录109家
- 2007年国家公务员考试各地市面试真题
- 广告牌匾拆除工程施工组织设计方案