EDA技术习题-修订版

更新时间:2023-11-17 15:32:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章EDA技术概述

填空题

1. 一般把EDA技术的发展分为_______、_______和________三个阶段。

2. 在EDA发展的_________阶段,人们只能借助计算机对电路进行模拟、预测,以及辅助进行集成电路版图编辑、印刷电路板(PCB)布局布线等工作。

3. 在EDA发展的_______阶段,人们可与将计算机作为单点设计工具,并建立各种设计单元库,开始用计算机将许多单点工具集成在一起使用。

4. EDA设计流程包括_________、__________、__________和_________四个步骤。 5. EDA的设计验证包括________、__________和_________。

6. EDA的设计输入方式主要包括________、________和_________。 7. 文本输入是指采用_________进行电路设计的方式。

8. 功能仿真是在设计输入完成之后,选择具体器件进行编译之前进行的逻辑功能验证,因此又称为_______。

9. 时序仿真是在选择了具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为________或_______。

10. 当前最流行的并成为IEEE标准的硬件描述语言包括_________和________. 11. 硬件描述语言HDL给PLD和数字系统的设计带来了更新的设计方法和理念,产生了目前最常用的并称之为_______的设计法。

12. EDA工具大致可以分为________、_______、_______、________以及_____等5个模块。

13. 将硬件描述语言转换为硬件电路的重要工具称为_______。 单项选择题

1. 将设计的系统或电路按照EDA开发软件要求的某种形式表示出来,并送入计算机的过程称为( ).

①设计输入 ②设计输出 ③仿真 ④综合 2. 在设计输入完成后,应立即对设计文件进行( )

①编辑 ②编译 ③功能仿真 ④时序仿真 3. 在设计处理工程中,可产生器件编程使用的数据文件,对于CPLD来说是产生( ) ①熔丝图 ②位流数据 ③图形 ④仿真 4. 在设计处理过程中,可产生供器件编程使用的数据文件,对于FPGA来说是生成( ) ①熔丝图 ②位流数据 ③图形 ④仿真 5. 在C语言的基础上演化而来的硬件描述语言是( )

①VHDL ②Verilog HDL ③AHD ④CUPL

6. 基于硬件描述语言HDL的数字系统设计目前最常用的设计法称为( )设计法。 ① 底向上 ②自顶向下 ③积木式 ④定层 7. 在EDA工具中,能将硬件描述语言转化为硬件电路的重要工具软件称为( )。 ① 仿真器 ②综合器 ③适配器 ④下载器 8. 在EDA工具中,能完成在目标系统器件上布局布线软件称为( )

①仿真器 ②综合器 ③适配器 ④下载器

1.4同步练习参考答案

填空题

1. CAD、CAE、EDA 2. CAD

3. CAE

4. 设计准备、设计输入、设计处理、器件编程 5. 功能仿真、时序仿真、器件测试

6. 文本输入方式、图形输入方式、波形输入方式 7. 硬件描述语言 8. 前仿真

9. 后仿真、延时仿真 10.VHDL、Verilog HDL 11.自顶向下

12.设计输入编辑器、仿真器、HDL综合器、适配器(或布局布线器)、下载器 13.HDL综合器 单项选择题

1.① 2. ② 3. ① 4.② 5. ② 6. ② 7. ② 8.③

第二章 EDA工具软件的使用方法

填空题

1. QuartusⅡ支持________,__________和_______等不同的编辑方式.

2. 用QuartusⅡ的输入法设计的文件不能直接保持在根目录上,因此设计者在进入设

计前,应当在计算机中建立保存文件的_________.

3. MegaFunctions是QuartusⅡ的_______库,包括参数可定制的复杂逻辑模块。 4. QuartusII的______元件库包括各种逻辑门,触发器和输入输出端口等。 5. Quartus工程中顶层文件的文件名必须和__________的名称一致. 6. QuartusII的分析与综合优化设置中,提供了________,________和________三种优

化选择.

7. 指定设计电路的输入\\输出端口与目标芯片引脚的连接关系的过程称为______. 8. Quartus的完整编译过程包含________,_________,__________和_________四个环

节.

9. 在完成设计电路的输入\\输出端口与目标芯片引脚的锁定后,再次对设计电路的仿

真称为_______或_______.

10. 以EDA方式实现的电路设计文件,最终可以编程下载到_________或_________芯片

中,完成硬件设计和验证.

11. QuartusII的嵌入式逻辑分析仪__________是一种高效的硬件测试工具,可以通过

__________接口从运行的设计中捕获内部信号的波形。

12. 用嵌入式逻辑分析仪捕获16位总线的信号,如采样深度为2K,则需要消耗______

字节的嵌入式RAM容量。

13. 在QuartusII中利用__________可以观察设计电路的综合结果。

14. 在给可编程逻辑器件编程时,常用的下载线有_________和__________. 单项选择题

1. 下列硬件描述语言中,QuartusⅡ不支持的是( ).

①VHDL ②SystemC ③AHDL ④VerilogHDL 2. QuartusⅡ工具软件具有( )等功能.

①仿真 ②综合 ③设计输入 ④以上均可 3. 使用QuartusⅡ工具软件实现原理图设计输入,应创建( )文件.

①bdf ②vhd ③bsf ④smf

4. QuartusⅡ的设计文件不能直接保护在( ).

①硬盘 ②根目录 ③文件夹 ④工程目录 5. 在QuartusⅡ的原理图文件中,正确的总线命名方式是( )。

①a[8] ②a[7..0] ③a[7:0] ④a[7 downto 0] 6. 在QuartusⅡ集成环境下为图形文件产生一个元件符号的主要用途是( )。

①仿真 ②编译 ③综合 ④被高层次电路设计调用 7.在QuartusⅡ中,不能作为工程顶层文件的格式为( )。 ①bdf ②v ③vhd ④smf 8.下列选项中,可以用作QuartusII工程顶层实体名的是( )。

①计数器 ②XNOR ③WRONG ④DFF 9.QuartusⅡ的波形文件类型是( ).

①.mif ②.vwf ③.vhd ④.v 10.QuartusⅡ的存储器初值设定文件类型是( )。

①.bsf ②.mif ③.vwf ④.smf

2.4 同步练习参考答案

填空题

1. 图形、文本、状态机 2. 工程目录(文件夹)

3. 宏功能元件(参数可设置强函数元件) 4. primitives 5. 顶层实体

6. 平衡、面积、速度 7. 引脚锁定

8. 分析与综合、适配、编程、时序分析 9. 时序仿真、后仿真 10. FPGA、CPLD

11. SignalTapII、JTAG 12. 4K

13. RTL阅读器

14. ByteBlaster、USB Blaster 单项选择题

1.② 2. ④ 3. ① 4. ② 5. ② 6. ④ 7. ④ 8. ③ 9. ② 10. ②

三、VHDL

填空题

1. IEEE于1987年将VHDL采纳为________标准. 2. 一般将一个完整的VHDL程序称为________.

3. VHDL设计实体的基本结构由_________,____________,_________,__________和_________等部分构成.

4. __________和_________是设计实体的基本组成部分,它们可以构成最基本的VHDL程序.

5. IEEE于1987年公布了VHDL的_________语法标准.

6. IEEE于1993年公布了VHDL的_________语法标准.

7. 根据VHDL语法规则,在VHDL程序中使用的文字,数据对象,数据类型都需要____________.

8. 在VHDL中最常用的库是____________标准库,最常用的程序包是_____________程序包.

9. VHDL的实体由_________部分和________组成.

10. VHDL的实体声明部分指定了设计单元的________或_________,它是设计实体对外的一个通信界面,是外界可以看到的部分.

11. VHDL的结构体用来描述设计实体的__________或________,它由VHDL语句构成,是外界看不到的部分.

12. 在VHDL的端口声明语句中,端口方向包括_________,___________,___________和__________.

13. VHDL的字符是以________括起来的数字,字母和符号。

14. VHDL的短标识符名必须以_________,后跟若干字母,数字和单个下划线构成,但最后不能为_______.

15. VHDL’93的数据对象包括_________,____________,___________和__________,它们是用来存放各种类型数据的容器.

16. VHDL的变量(VARIABLE)是一个_________,只能在进程,函数和过程中声明和使用. 17. VHDL的信号(SIGNAL)是一种数值容器,不仅可以容纳_________,也可以保持_________.

18. VHDL’87的数据类型包括________,_________,___________和___________. 19. VHDL的标量型(Scalar Type)是单元素的最基本数据类型,包括________,_________,________和________.

20. 在VHDL中,标准逻辑位数据有________种逻辑值.

21. VHDL的操作符包括___________,___________,___________和__________四类. 22. 在VHDL中,预定义的________可用于检出时钟边沿,完成定时检查,获得未约束的数据类型的范围等.

23. VHDL的基本描述语句包括_________和__________.

24. VHDL的顺序语句只能出现在_________,_________和_______中,是按程序书写的顺序自上而下,一条一条的执行.

25. VHDL的并行语句在结构体中的执行是_________的,其执行方式与语句书写的顺序无关.

26. VHDL的PROCESS(进程)内部是由___________组成的,但PROCESS语句本身却是___________.

27. VHDL的子程序有__________和______________两种类型.

28. VHDL的过程分为过程首和过程体两部分,如需在不同实体中调用需要将它们装入_______________中.

29. VHDL的函数分为____________和_____________两部分, 如需在不同实体中调用需要将它们装入程序包(Package)中.

30. 程序包是利用VHDL语言编写的,其原程序也需要以_______文件类型保存.

单项选择题

1. IEEE于1987年公布了VHDL的( )语法规则。 ① IEEESTD1076-1987 ②RS232

③ IEEE.STD_LOGIC_1164 ④IEEE STD 1076-1993 2. IEEE于1993年公布了VHDL的( )语法规则。 ① IEEESTD1076-1987 ②RS232

③ IEEE.STD_LOGIC_1164 ④IEEE STD 1076-1993

3. 一个能为VHDL综合器接受,并能作为一个独立的设计单元的完整的VHDL程序称为( )。

①设计输入 ②设计输出 ③设计实体 ④设计结构 4. VHDL的设计实体可以被高层次的系统( ),成为系统的一部分.

① 输入 ②输出 ③仿真 ④调用 5. VHDL最常用的库是( )标准库.

①IEEE ②STD ③WORK ④PACKAGE 6. 在VHDL的端口声明语句中,用( )声明端口为输入方向.

① IN ②OUT ③INOUT ④BUFFFR 7. 在VHDL的端口声明语句中,用( )声明端口为输出方向.

① IN ②OUT ③INOUT ④BUFFFR 8. 在VHDL的端口声明语句中,用( )声明端口为双向方向.

① IN ②OUT ③INOUT ④BUFFFR 9. 在VHDL的端口声明语句中,用( )声明端口为具有读功能的输出方向.

① IN ②OUT ③INOUT ④BUFFFR 10. 在VHDL中用( )来把特定的结构体关联一个确定的实体,为一个大型系统的设计提供管理和进行工程组织.

① 输入 ②输出 ③综合 ④配置 11. 在VHDL中,45_235_287属于( )文字.

①整数 ②以数制基数表示的 ③实数 ④物理量 12. 在VHDL中,88_670_551.453_909属于( )文字.

①整数 ②以数制基数表示的 ③实数 ④物理量 13. 在VHDL中,16#FE#属于( )文字..

①整数 ②以数制基数表示的 ③实数 ④物理量 14. 在VHDL中,100m属于( )文字.

①整数 ②以数制基数表示的 ③实数 ④物理量 15. 在VHDL短标识符命名规则中,以( )开头的标志符是正确的.

①字母 ②数字 ③字母或数字 ④下划线 16. 在下列标志符中,( )是VHDL的合法标志符.

①4h_adder ②h_adder_ ③h_adder ④_h_adde 17. 在 VHDL中,( )不能将信息带出对它定义的当前设计单元。

① 信号 ②常量 ③数据 ④变量 18. 在VHDL中,( )的赋值是立即发生的,不存在任何延时的行为。

① 信号 ②常量 ③数据 ④变量 19. 在VHDL中,为目标变量的赋值符号是( )。

①=: ②= ③∶= ④<= 20. 在VHDL中,为目标信号的赋值符号是( ).

①=: ②= ③:= ④<= 21. 在VHDL中,在定义信号时,可以用( )符号为信号赋初值.

①=: ②= ③:= ④<=

22. 在VHDL中,( )是单元素的最基本数据类型,通常用于描述一个单值的数据对象. ①标量型 ②复合类型 ③存取类型 ④文件类型 23. 在VHDL中,数组型(Array)和记录型(Record)属于( )数据.

①标量型 ②复合类型 ③存取类型 ④文件类型 24. 在VHDL的IEEE标准库中,预定义的标准逻辑数据STD_LOGIC有( )种逻辑值. ① 2 ② 3 ③ 8 ④ 9 25.在VHDL的IEEE标准库中,预定义的位数据类型BIT有( )种逻辑值. ① 2 ② 3 ③ 8 ④ 9

26. 在VHDL的IEEE标注库中,预定义的标准逻辑位STD_LOGIC的数据类型中的数据是用( )表示的.

①小写字母 ②大写字母 ③大或小写字母 ④全部是数字 27.在VHDL中,加”+”和减”-“算术运算的操作数据是( )数据类型.

①整型 ②实型 ③整型或实型 ④任意类型 28. 在VHDL中,可以用“*”和除“/”算术运算的操作数据是( )。

①INTEGER ②STD_LOGIC ③BIT_VECTOR ④BOOLEAN 29. 在VHDL中,用语句( )表示检测clock的上升沿。

① clock’EVENT ② clock`EVENT AND clock=’1’ ② clock=’1’ ④ clock`EVENT AND clock=’0’ 30. 在VHDL中,用语句( )表示检测clock的下降沿。

①clock’EVENT ② clock’EVENT AND clock=’1’ ③clock=’0’ ④ clock’EVENT AND clock=’0’ 31. 在VHDL中没IF语句中至少应有1个条件语句,条件语句必须由( )表达式构成。 ①BIT ②STD_LOGIC ③BOOLEAN ④任意 32. 在VHDL的CASE语句中,条件句中的\不是操作符,它只是相当于( )的作用. ①IF ②THEN ③AND ④OR 33. 在VHDL的FOR_LOOP语句中循环变量的一个临时变量,属于LOOP语句的局部变量,( )事先声明.

① 必须 ②不必 ③其类型要 ④其属性要 34. 在VHDL中,预计“FOR n IN 0 TO 7 LOOP”定义循环次数是( )次。 ①8 ②7 ③0 ④1 35. 在VHDL中,下列用法中可以综合的是( )。

① WAIT ②WAIT FOR ③WAIT ON ④WAIT UNTIL 36. 在VHDL的并行语句之间,可以用( )来传送往来信息。

①变量 ②变量和信号 ③信号 ④常量 37. 在VHDL中,PROCESS结构内部是由( )语句组成的。

①顺序 ②顺序和并行 ③并行 ④任何 38.VHDL的块语句是并行语句结构,它的内部是由( )语句构成的。

①并行和顺序 ②顺序 ③并行 ④任意 39.在VHDL中,条件信号赋值语句WHEN_ELSE属于( )语句.

①并行和顺序 ②顺序 ③并行 ④任意

40.在元件例化(COMPONENT)语句中,用( )符号实现名称映射,将例化元件端口声明语句中的信号名与PORT MAP()中的信号名关联起来.

① = ②:= ③<= ④=> 41. VHDL的STD库包含TEXTIO程序包,它们是文件( )程序包.

①输入 ②输入/输出 ③输出 ④编辑

42. VHDL的WORK库是用户设计的现行工作库,用于存放( )的工程项目. ①用户自己设计 ②公共程序 ③共享数据 ④图形文件

43. 在VHD中,为了使已声明的数据类型,子程序,元件能被其他设计实体调用或共享,可以把它们汇集在( )中.

①实体 ②程序库 ③结构体 ④程序包 应用题

1. 分析下面的VHDL源程序,说明设计电路的功能。

LIBRARY IEEE:

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIFNED.ALL; ENTITY LX3_I IS

PORT( s2,s1,s0: IN STD_LOGIC;

d3,d2,d1,d0: IN STD_LOGIC; d7,d6,d5,d4: IN STD_LOGIC;

Y: OUT STD_ULOGIC);

END LX3_1;

ARCHITECTURE one OF LX3_1 IS

SIGNAL s: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN

s<= s2&s1&s0;

y<= d0 WHEN s=”000”ELSE d1 WHEN s=”001”ELSE d2 WHEN s=”010”ELSE d3 WHEN s=”011”ELSE d4 WHEN s=”100”ELSE d5 WHEN s=”101”ELSE d6 WHEN s=”110”ELSE d7;

END one;

2. 分析下面的VHDL源程序,说明设计电路的功能。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE. STD_LOGIC_UNSIGNED.ALL; ENTITY LX3_2 IS

PORT( a:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

b:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

GT,LT,EQ:OUT STD_LOGIC); END LX3_2;

ARCHITECTURE one OF LX3_2 IS BEGIN

PROCESS(a,b)

BEGIN

GT<=’0’; LT<=’0’; EQ<=’0’;

IF a>b THEN GT<=’1’; ELSIF a

2. 分析下面的VHDL源程序,说明设计电路的功能。 LIBRARY IEEE;

USE IEEE. STD_LOGIC_1164.ALL; ENTITY LX3_3 IS

PORT(ABIN:IN STD_LOGIC_BECTOR(7 DOWNTO 0); DIN:IN STD_LOGIC_VECTOR(7 DOWENTO 0); DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END LX3_3;

ARCHITECTURE ONE OF LX3_3 IS BEGIN

PROCESS(ABIN,DIN) BEGIN

FOR I IN 0 TO 7 LOOP

DOUT(I)<=DIN(I) AND ABIN(I); END LOOP; END PROCESS; END ONE;

4. 分析下面的VHDL源程序,说明设计电路的功能。 LIBRARY IEEE;

USE IEEE. STD_LOGIC_1164.ALL; USE IEEE. STD_LOGIC_UNSIGNED.ALL; ENTITY LX3_4 IS

PORT( CLK:IN STD_LOGIC;

J,K:IN STD_LOGIC; Q,QN:OUT STD_LOGIC);

END LX3_4;

ARCHITECTURE strue OF LX3_4 IS

SINGNAL Q_TEMP: STD_LOGIC:=’0’;

SIGNAL JK: STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

JK<=J&K;

PROCESS(CLK,J,K) BEGIN

IF CLK`EVENT AND CLK=’0’THEN CASE JK IS

WHEN ”00”=>Q_TEMP<=Q_TEMP; WHEN ”01”=>Q_TEMP<=’0’; WHEN ”10”=>Q_TEMP<=’1’;

WHEN ”11”=>Q_TEMP<=NOT Q_TEMP; WHEN OTHERS=>Q_TEMP<=’X’; END CASE; END IF; Q<=A_TEMP; QN<=NOT Q_TEMP; END PROCESS; END struc;

8. 分析下面的VHDL源程序,说明设计电路的功能。 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY LX3_5 IS

PORT(CLK,RST,ENA:IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT:OUT STD_LOGIC); END LX3_5;

ARCHITECTURE one OF LX3_5 IS

SINGAL QI: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS(CLK,RST,ENA) BEGIN

IF RST=’1’ THEN QI<=”00000000”; ELSIF CLK’EVENT AND CLK=’1’THEN IF ENA=’1’THEN QI<=QI+1; END IF; END IF; Q<=QI; END PROCESS;

COUT<=QI(0)AND QI(1)AND QI(2)AND QI(3)AND QI(4)AND QI(5)AND QI(6)AND QI(7); END one;

6. 编写16选1数据选择器的VHDL源程序.设电路的16位数据输入为A[15..0],使能控制端为ENA,高电平有效,数据选择输出为Y.

7. 编写8位二进制数据比较器的VHDL源程序.设电路的两个8位二进制数输入为

A[7..0]和B[7.00],当A[7..0]>B[7..0]时,输出GT=1,当A[7..0]

8. 编写带置位和复位控制的D型触发器的VHDL源程序,设电路的置位端为PRD,复位端为CLR,低电平有效,互补输出端为Q和QN。

9.编写带三态输出的8位D锁存器的VHDL源程序,设数据输入为D[7..0]、时钟输入为CLK、三态使能控制输入为OE,高电平有效,输出为Q[7..0]。

10. 编写8位二进制数求补电路的VHDL源程序。设电路的输入为A[7..0],输出为B[7..0,A[7]和B[7]是符号位。

11. 编写8位二进制数据收发器的VHDL源程序。设电路的输入/输出(双向)为A[7..0]何B[7..0]。OEN是使能控制端,当OEN[=0时电路工作,OEN=1时电路被禁止,A[7..0]和B[7..0]为高阻态。DTR为收发控制端,当DRT=1时,数据由A[7..0]发送到B[7..0],DTR=0时,时间由B[7..0]发到A[7..0]。

12. 编写8位左移移位寄存器的VHDL源程序。设电路的并行设计输入端为D[7..0],并行数据输出端为Q[7..0],串行数据输入端为DSL,时钟输入端为CLK。LDN是预置控制输入端,当LDN=0时,Q[7..0]=D[7..0]。CLRN是复位控制输入端,当CLRN=0时,移位寄存器被复位。

13. 编写带复位和预置控制的六进制加法计数器CN6_1的VHDL源程序.设电路的预置数据输入端为D[3..0],计数输出端为Q[3..0](考虑译码电路的4位数据的输入要求).时钟输入端为CLK.CLRN是复位控制输入端,当CLRN=0时,Q[3..0]=0000.LDN是预置控制输入端,大那个LDN=0时,Q[3..0]=D[3..0].ENA是使能控制输入端,当ENA=1时,计数器计数,ENA=0时,计数器保持状态不变.

14.编写带复位和预置控制的十进制假发计数器CNT10_1的VHDL源程序.设电路的预置数据输入端为D[3..0],计数输出端为Q[3..0].时钟输入端为CLK.CLRN是复位控制输入端,当CLRN=0时,Q[3..0]=0000.LD是预置控制输入端,当LDN=0时,Q[3..0]=D[3..0].ENA=1时,计数器计数,ENA=0时,计数器保持状态不变.

15. 利用题13设计的CNT6_1和题14设计的CNT10_1计数器,设计六十进制计数器CNT60——1。设电路的预置时间输入端为D[7..0],计数输出端为Q[7..4](十位数输出)和Q[3..0](个位输出)。时钟输入端为CLK。CLRN是复位控制输入端,当CLRN=0时,!

Q[7..0]=00000000 。LDN是预置控制输入端,当LDN=0时,Q[7..0]=D[7..0].ENA是使能控制输入端,当ENA=1时,计数器计数,ENA=0时,计数器保持状态不变。使用VHDL的元件例化语句实现电路设计。

3.4同步练习参考答案

填空题

1. IEEE#1076 2. 设计实体

3. 库、程序包、实体、结构体、配置 4. 实体,结构体

5. IEEE STD 1076-1987(即VHDL’ 87) 6. IEEE STD 1076-1993(即VHDL’93) 7. 预先定义

8. IEEE,STD_LOGIC_1164 9. 实体声明,结构体 10. 输入/输出端口,引脚 11. 逻辑结构,逻辑功能

12. IN(输入)、OUT(输出)、INOUT(双向)、BUFFER(具有读功能的输出) 13. 单引号

14. 字母开头,下划线

15. 变量、常量、信号、文件 16. 局部变量

17. 当前值,历史值

18. 标量型、复合型、存取类型、文件类型 19. 实数类型、整数类型、枚举类型、时间类型 20. 9

21. 逻辑操作符(Logic Operator)、关系操作符(Relational Operator)、算术操作符

(Arithmetic Operator)、符号操作符(Sign Operator ) 22. 属性描述语句

23. 顺序语句()Sequential Statements),并行语句(Concurrent Statements ) 24. 进程(PROCESS)、过程(PROCEDURE)、函数(FUNCTION) 25. 并行运行

26. 顺序语句,并行语句 27. 过程(PROCEDURE),函数(FUNCTION) 28. 程序包(Package) 29. 函数首,函数体 30. vhd

单项选择题

1.① 2.④ 3.③ 4.④ 5.① 6.① 7.② 8.③ 9.④ 10.④ 11.① 12.③ 13.② 14. ④ 15.① 16.③ 17.④ 18.④ 19.③ 20.④ 21.③ 22.① 23.② 24.④ 25.① 26.② 27.① 28.① 29.② 30.④ 31.③ 32.② 33.② 34.① 35.④ 36.③ 37.① 38.③ 39.③ 40.④ 41.② 42.① 43.④ 应用题

1. 解:该VHDL源程序设计是8选1数据选择器,d7~d0是数据输入端,s2、s1和s0是控制输入端,y是数据输出端。当s2s1s0=000时,d0数据被选中,输出y=d0;当s2s1s0=001时,d1数据被选中,输出y=d1;依次类推。 2. 解:该VHDL源程序设计4位二进制数据比较器电路。A[3..0]是两个4位二进制输入,当A[3..0]〉B[3..0]时,大于输出端GT=1;当A[3..0]

5. 解:该VHDL源程序设计带复位和使能控制的8位二进制加法计数器电路。CLK是时钟输入端。RST是复位控制输入端,当RST=1时,计数器被复位。ENA是使能控制输入端,电路每接收到一个CLK时钟的下降沿,计数器状态不变(保持)。在ENA=1和RST=0时,电路每接收到一个CLK时钟的下降沿,计数器状态加1。当计数器状态为“11111111”(最大值)时,进位输出COUT=1,产生高位的计数进位。 6. 解:16选1数据选择器的VHDL源程序如下:

LIBRARY IEEE:

USE IEEE.ATD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITIY mux16_1 IS

PORT( s3,s2,s1,s0:IN STD_LOGIC;

d15,d14,d13,d12:IN STD_LOGIC; d11,d10,d9,d8:IN STD_LOGIC; d7,d6,d5,d4:IN STD_LOGIC; d3,d2,d1,d0:IN STD_LOGIC;

Y:OUT STD_ULOGIC);

END mux16_1;

ARCHITECTURE one OF mux16_1 IS

SIGNAL s:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

s<=s3&s2&s1&s0;

y<=d0 WHEN s=”0000”ELSE d1 WHEN s=”0001”ELSE d2 WHEN s=”0010”ELSE d3 WHEN s=”0011”ELSE d4 WHEN s=”0100”ELSE d5 WHEN s=”0101”ELSE d6 WHEN s=”0110”ELSE d7 WHEN s=”0111”ELSE d8 WHEN s=”1000”ELSE d9 WHEN s=”1001”ELSE d10 WHEN s=”1010”ELSE d11 WHEN s=”1011”ELSE d12 WHEN s=”1100”ELSE d13 WHEN s=”1101”ELSE d14 WHEN s=”1110”ELSE d15;

END one;

在源程序中,d15~d0是电路的16位数据输入端;s3、s2、s1和s0是选择控制输入端,当s3s2s1s0=000时,数据选择输出y=d0,当s3s2s1s0=0001时,书记选择输出y=d1,依次类推。 7. 解:8位二进制数据比较器的VHDL源程序如下:

LIBRARY IEEE:

USE IEEE.ATD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY comp8_1 IS

PORT( a,b:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LT,GT,EQ:OUT STD_ULOGIC); END comp8_1;

ARCHITETURE one OF comp8_1 IS BEGIN

PROCESS(a,b) BEGIN

IF a>b THEN LT<=’0’;

GT<=’1’; EQ<=’0’; ELSEIF a

LT<=’1’; GT<=’0’; EQ<=’0’; ELSE

LT<=’0’; GT<=’0’; EQ<=’1’; END IF; END PROCESS;

END one;

在源程序中,a[7..0]he b[7..0]是数据比较器电路的两个8位二进制数输入端,当a[7..0]>b[7..0]时,输出GT=1(表示a大于b),当a[7..0]

8. 解:带置位和复位控制的D型触发器的VHDL源程序如下:

LIBRARY IEEE:

USE IEEE.ATD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DFF_1 IS

PORT( CLK:IN STD_LOGIC;

D,PRD,CLR:IN STD_LOGIC; Q,QN:OUT STD_LOGIC);

END DFF_1;

ARCHITECTURE struc OF DFF_1 IS

SIGNAL Q_TEMP:STD_LOGIC:=’0’; BEGIN

PROCESS(PRD,CLR,CLK,D) BEGIN

IF CLR=’0’ THEN Q_TEMP<=’0’; ELSEIF PRD=’0’THEN Q_TEMP<=’1’; ELSE IF CLK`EVENT AND CLK=’1’THEN 1_TEMP<=D; END IF; END IF; Q<=Q_TEMP; QN<=NOT Q_TEMP; END PROCESS;

END struc;

在源程序中,PRD是D触发器电路的置位端,低电平有效;CLR是复位端,低电平有效;Dshi数据输入端;Q和QN是触发器互不输出端。

带置位和复位控制的D型触发器的仿真波形如图3.2所示。在仿真波形总,当置位输入端PRD和复位输入端CLR均为有效电平(低电平)时,输出Q和QN的状态不确定,说明置位和复位输入提示有效是不允许的,这是触发器约束条件。

9. 解:带三态输出的8位D锁存器的VHDL源程序如下:

LIBRARY IEEE:

USE IEEE.ATD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY LATCH8_1 IS

PORT(CLK,CLR,OE:INBIT;

D:INSTD_LOGIC_VECTOR(7 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END LATCH8_1;

ARCHITECTURE struc OF LATCH8_1IS

SIGNALQ_TEMP:STD_LOGIC_VECTOR(7 DOWENTO 0); BEGIN

PROCESS(CLK) BEGIN

IF CLR=’0’THEN Q_TEMP<=’00000000’; ELSEIF CLK=’1’THEN Q_TEMP<=D; ELSEIF Q_TEMP<=Q_TEMP; EBD IF; END PROCESS;

Q<=Q_TEMP WHEN OE=’1’ELSE “ZZZZZZZZ”; END struc;

在源程序中,D[7..0]是8位D锁存器数据输入端,CLK是时钟输入端;OE是三态使能控制端,高电平有效;Q[7..0]使锁存器的输出端。带三态输出的8D锁存器的仿真波形如图3.3所示。

10. 解:在计算机中,求补运算用于将一个正数的补码转换为其对应负数的补码,或将一个负数的补码转换为其对应正数的补码。求补运算的规则是将二进制数补码的的全部位(包含符号位)按位取反后再加1。根据求补运算规则,8位二进制数求补电路的VHDL源程序如下:

LIBRARY IEEE:

USE IEEE.ATD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY NEG8_1 IS

PORT(A:IN STD_LOGIC_VECTOR(7 DOWENTO 0);

B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END NEG8_1;

ARCHITECTURE one NEG8_1 IS

SIGNAL BB:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

BB<=NOT A; B<=BB+1; END one;

8位二进制数求补电路的仿真波形如图3.4所示

10. 解:8位二进制数据收发器的VHDL源程序如下: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DTR8_1 IS

PORT(OEN,DTR:IN BIT;

A,B:INOUT STD_LOGIC_VECTOR(7 DOENTO 0));

END DTR8_1;

ARXHITECTURE one OF DTR8_1 IS

SIGNAL Areg,Breg:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS(DTR,A) BEGIN

IF DTR=’1’THEN Breg<=A; END IF; END PROCESS;

B<=Breg,WHEN OEN=’0’ELSE “ZZZZZZZZ”; PROCESS(DTR,B) BEGIN

IF DTR=’0’THEN Areg<=B; END IF; END PROCESS;

A<=Areg WHEN OEN=’0’ELSE “ZZZZZZZZ”; END one;

在源程序中,A[7..0]和B[7..0]是设计电路的输入/输出(双向)端:OEN是使能控制端,当OEN=1时电路工作,OEN=0时电路被禁止,A[7..0]和B[7..0]为高阻态;DTR为收发控制端,当DTR=1时,数据由A[7..0]发送到B[7..0],DTR=0时,数据由B[7..0]发送到A[7..0]。

11. 解:8位左移移位寄存器的VHDL源程序如下:

begin q=4`b0000;cout=0;end else

begin q=q+1;cout=q[2]&&q[0];end

end

endmodule

在源程序zhomg。D[3..0]是计数器电路的预置数据输入端,q[3..0]是计数器的状态输出端;clk是时钟输入端;clrn是复位控制输入端,当clrn=0时,q[3..0]=0000;ldn是预置控制输入端,当ldn=0时,q[3..0]=d[3..0];ena是使能控制输入端,大那个ena=1时,计数器计数,ena=0时,计数器保持状态不变。 17. 解:带复位和预置控制的十进制加法计数器cnt10_v的Verilog HDL源程序如下: module cnt10_v(clrn,clk,ena,ldn,dmqmcout);

input clrn,clk,ena,ldn; input[3:0] d; output[3:0] q; output cout; reg[3:0] q; reg cout;

always @(posedge clk or negedge clrm) begin

if(~clrn)

begin q=4`b0000;cout=0;end else if(~ldn)

begin q=d;cout=q[3]&&q[0];end else if(ena)

if(q==4`b0000)

begin q=4`b0000;cout=0;end else

begin q=q+1;cout=q[3]&&q[0];end end

endmodule

在源程序中,d[3..0]是十进制加法计数器电路的预置数据输入端,q[3..0]是计数器的状态输出端;clk是时钟输入端;clrn是复位控制输入端,当clrn=0时,q[3..0]=0000;ldn是预置控制输入端,当ldn=0时,q[3..0]=d[3..0];ena是使能控制输入端,当ena=1时,计数器计数,ena=0时,计数器保持状态不变。

18. 解:利用应用题13设计的cnt6_v和应用题14设计的cnt10_v计数器,设计的六十进制计数器cnt60_v的原理图如图4.1所示。

图4.1所示的原理图是用MAX+plusⅡ的原理图输入法设计的,但有的EDA工具并不支持原理图输入设计法,因此要求使用Verilog HDL的元件例化语句实现电路设计。

由图4.1所示的原理图可知,六十进制计数器设计需要1片十进制计数器cnt10_v,1片六十进制计数器cnt6_v和1片两输入端的与门ANF2。Cnt10_v和cnt6_v和cnt10_v已在题14设计和题13设计中完成,还需要设计1个两输入端的与门and2_v(即图4.1中的AND2)。And2_v的Verilog HDL源程序如下: module and2_v(a,b,y);

input a,b;

output y;

assign y=a&&b; endmodule

使用Verilog HDL的元件例化语句设计的六十进制计数器cnt60_v的Verilog HDL源程序如下:

module cnt60_v(clrn,clk,ena,ldn,d,q,cout);

input clrn,clk,ena,ldn; input[7:0] d; outpur[7:0] q; output cout; wire a,b;

cnt10_v u1(clrn,clk,ena,ldn,d[3:0],q[3:0],a); cnt6_v u2(clrm,clk,a,ldm,d[7:4],q[7:4],b); and2_v u3(a,b,cout); endmodule

在六十进制计数器cnt60_v的Verilog HDL源程序中,声明了两个线性变量a和b作为电路内部的连线,它们分别接于cnt10_V和cnt6_vde进位输出端cout。

① 设计输入 ② 设计输出 ③设计模块 ④ 设计结构 4. Verilog HDL的设计模块可以被高层次的系统( ),成为系统的一部分。 ① 输入 ② 输出 ③仿真 ④调用 5. Verilog HDL的模块端口定义用来声明电路设计模块的( )端口。

① 输入 ② 输出 ③ 双向 ④全部输入/输出

6. 在Verilog HDL模块的I/O声明中,用来声明端口数据流动方向的关键字包括( )。 ①input ② output ③ inout ④以上均可 7. 在Verilog HDL的端口声明语句中,用( )关键字声明端口为输入方向。 ①input ②INPUT ③IN ④output 8. 在Verilog HDL的端口声明语句中,用( )关键字声明端口为输出方向。 ①input ②INPUT ③OUT ④output 9.在Verilog HDL的端口声明语句中,用( )关键字声明端口为双向方向。 ①inout ②INOUT ③BUFFER ④buffer

10. Verilog HDL的功能描述是用来描述设计模块的内部结构和模块端口间的逻辑关系,通常把确定这些设计模块描述的方法称为( )。

①综合 ②仿真 ③建模 ④设计 11. 用Verilog HDL的assign语句建模的方法一般称为( )方式。

①连续赋值 ②并行赋值 ③串行赋值 ④函数赋值 12. 用Verilog HDL的元件例化方式建模来完成的设计一般属于( )描述方式。 ①行为 ②结构 ③功能 ④行为和结构 13. Verilog HDL程序的每个模块的内容都是嵌在( )两语句之间。 ①start和endmodule ② module和end ③module和endmodule ④ start和endstart 14. 除了end或以end开头的关键字(如endmodule)语句外,Verilog HDL的每条语句后必须要有( )。 ①逗号“,” ②句号“。” ③分号“;” ④冒号“:” 15. Verilog HDL的行注释用符号( )开始,注释到本行结束。

①/* ②// ③-- ④*/ 16. 在Verilog HDL的常数中,未知数字是用( )表示。

①_ ②X ③Z ④W 17. 在Verilog HDL的常数中,高阻态数字是用( )表示。

①X ②H ③r ④Z 18. 在Verilog HDL的常数中,二进制数符号是用( )表示。

①d或D ②b或B ③o或O ④h或H 19. 在Verilog HDL的常数中,八进制数符号是用( )表示。

①d或D ②b或B ③o或O ④h或H 20. 在Verilog HDL的常数中,十六进制数符号是用( )表示。

①d或D ②b或B ③o或O ④h或H 21. Verilog HDL的字符串是用双引号括起来的( )序列。

①可打印字符 ②大写字母 ③小写字母 ④字母或数字 22. Verilog HDL的简单标识符可以是字母、数字和下划线“_”和货币符号$组成的任意序列,但首字符不能是( )。

①大写字母 ②小写字母 ③数字 ④下划线“_”

23. 在Verilog HDL的标识符中使用字母的规则是( )。

①大小写相同 ②大小写不同 ③只允许用大写 ④只允许小写 24. 在下列符号组中,( )不能作为Verilog HDL的标识符。

①CT7418 ②74LS138 ③_74138 ④CT74138_ 25. Verilog HDL的关键字有97个,每个关键字全部由( )组成.

①大写字母 ②小写字母 ③大写或小写字母 ④大写和小写字母 26. 操作符是Verilog HDL预定义的函数名字,操作符是由( )个字符组成的. ①1 ②2 ③3 ④1~3 27. 对于Verilog HDL的算术运算表达式,”13%5”,其结果值( ). ①13 ②5 ③3 ④2

28. 在Verilog HDL的逻辑运算中,设A=8`b11010001,B=8`b00011001,则表达式”A&B”的结果为( )

①8`b00010001 ②8`b11011001 ③8`b11001000 ④8`b00110111 29. 在Verilog HDL的逻辑运算中,设A=8`b11010001,B=8`b00011001,则表达式”A|B”的结果为( ).

①8`b00010001 ②8`b11011001 ③8`b11001000 ④8`b00110111 30. 在Verilog HDL的逻辑运算中,设A=8`b11010001,B=8`b00011001,则表达式”A^B”的结果为( ).

①8`b00010001 ②8`b11011001 ③8`b11001000 ④8`b00110111 31. 在Verilog HDL的关系运算,如果关系是真,则计算结果是( ). ①0 ②1 ③x ④z

32. 在Verilog HDL的关系运算中,如果某个操作数的值不定,则计算结果为( ). ①0 ②1 ③x ④z 33. 在Verilog HDL的缩减操作运算中,设A=8`b11010001,则”&A”的运算结果为( ). ①0 ②1 ③x ④z 34. 在Verilog HDL的缩减操作运算中,设A=8`b11010001,则”|A”的运算结果为( ). ①0 ②1 ③x ④z

35. 在Verilog HDL的转移操作运算中,用符号”>>”实现对操作数的( )操作. ①逻辑右移 ②算术右移 ③逻辑左移 ④算术左移 36. 在Verilog HDL的并接操作运算中,用符号”<<”实现对操作数的( )操作. ①逻辑右移 ②算术右移 ③逻辑左移 ④算术左移 37. 在Verilog HDL的并接操作运算中,已知A=8`b11010001,B=8`b10100010,则{A[3:0],B[5:2]}的结果是( ).

①8`b11010001 ②8`b101000010 ③8`b00011000 ④8`b11110000 38.在Verilog HDL的设计模块中,最常用的寄存器型变量是( )型变量。 ①reg ②nets ③reg或nets ④integer 39.在Verilog HDL中,连续赋值语句的关键字是( )。

①assign ②ASSIGN ③Assign ④以上均可 40. 在Verilog HDL中,连续赋值语句的“=”号两边的变量都应该是( )。 ①wire ②register ③wire或register ④integer 41. 在Verilog HDL中,语句“always@(posedge clk)”表示模块的事件是由clk的( )触发的.

①下降沿 ②上升沿 ③高电平 ④低电平 42. 在Verilog HDL中,语句”always@(negedge clk)”表示模块的事件是由clk的( )

触发的.

①下降沿 ②上升沿 ③高电平 ④低电平 43. 在Verilog HDL模块中,函数调用时返回一个用于( )的值.

①程序包 ②输入 ③输出 ④表达式 44. Verilog HDL的always块语句中的语句是( )语句.

①顺序 ②并行 ③顺序或并行 ④串行 45. Verilog HDL的always块本身是( )语句.

①顺序 ②并行 ③顺序或并行 ④串行

应用题

1. 分析下面的Verilog HDL原程序,说明设计电路的功能. module 1x_4_1(y,d0,d1,d2,d3,d4,d5,d6,d7,s2,s1,s0);

input s2,s1,s0;

input d0,d1,d2,d3,d4,d5,d6,d7; output y; reg y; always begin

case({s2,s1,s0})

3`b000:y=d0; 3`b001:y=d1; 3`b010:y=d2; 3`b011:y=d3; 3`b100:y=d4; 3`b101:y=d5; 3`b110:y=d6; 3`b111:y=d7; endcase end

endmodule

2. 分析下面的Verilog HDL源程序,说明设计电路的功能。 module 1x_4_2(a,b,gt,t,eq);

input[7:0] a,b;

output gt,lt,eq; reg gt,lt,eq; always @(a or b) begin

if(a>b)begin

gt=1`b1; lt=1`b0; eq=1`b0; end

else if(a

gt=1`b1;

lt=1`b0; eq=1`b0; end

else if(a==b)begin

gt=1`b1; lt=1`b0; eq=1`b0; end

end endmodule

3. 分析下面的Veilog HDL源程序,说明设计电路的功能。 module 1x_4_3(a,b,y); input[7:0] a,b;

output[7:0] y; reg[7:0] y; integer i;

always @(a or b) begin

for(i=0;i<8;i=i+1) begin

y[i]=a[i]&&b[i]; end end endmodul

4. 分析下面的Verilog HDL源程序,说明设计电路的功能。 module lx_4_4(j,k,clr,q,qm);

input j,k,clr,clk; output q,qn; reg q,qn;

always @(negedge clk or negedge clk)

begin

if(-clr) begin q=0; qn=1;end else

case({j,k})

`b00:begin q=q;

qn=qn;end `b01:begin q=0; Qn=1;end `b10:begin q=1;

qn=0;end

`b11:begin q=-q;

qn=-qn;end degault begin q=0;

qn=1;end endcase

end

endmodule

5. 分析下面的Verilog HDL源程序,说明电路设计的功能。 module 1x_4_5(q,cout,ena,clk,clr)

input ena,clk,clr; output[7:0] q; output cout; reg [7:0] q;

always @(posedge clk) begin

if(~clr) q=`b00000000; else if(ena) q=q+1; end

assign cout=&q; endmodule

6. 编写16选1数据选择器的Verilog HDL源程序。设电路的16位数据输入为a[5..0],使能控制端为ena,高电平有效,数据选择输出为y。

7. 编写16位二进制数据比较器的Verilog HDL源程序,设电路的两个16位二进制数输入为a[15..0]和b[15..0],当a[15..0]〉b[15..0]时,大于输出gt=1,当

a[15..0]

8. 编写带置位和复位控制的D型触发器的Verilog HDL源程序。设电路的置位端为prd,复位端为clr,低电平有效,互补输出端为q和qn。

9. 编写带三态输出的16位D所存器的Verilog HDL源程序,设数据输入为d[15..0],时钟输入为clk,三态使能控制输入为oe,高电平有效,输出为q[5..0]。

10. 编写8位二进制数求补电路的Verilog HDL源程序,设电路的输入为阿[7..0],输出为b[7..0],a[7]和b[7]是符号位。

11. 编写8位二进制数据收发器的Verilog HDL源程序,设电路的输入/输出(双向)为a[7..0]和b[7..0]。oen是使能控制端,当oen=0时电路工作,oen=1电路被禁止,a[7..0]何b[7..0]位高阻态。Dtr为收发控制器,当dtr=1时,数据由a[7..0]发送到b[7..0],dtr=0时,数据由b[7..0]发送到a[7.00]。

12. 编写8位左位移移位寄存器的Verilog HDL源程序。设电路的并行输入端为

d[7..0],并行数据输出端为q[7..0],串行数据输入端为ds1,时钟输入端为clk。Ldn是预制控制输入端,当ldn=0时,q[7..0]=b[7..0]。clrn是复位控制器,当clrn=0时,移位寄存器被复位。

13. 编写带复位和已知控制的六进制加法计数器cnt6_v的Verilog HDL源程序。设电路的预制数据输入端为d[3..0],计数输出端为q[3..0](考虑译码电路的4位数据的输入需求)。时钟输入端为clk。Clrn是复位控制输入端,当clrn=0时,q[3..0]=0000。Ldn是预制控制输入端,当ldn=0时,q[3..0]=d[3..0]。ena是使能控制输入端,当ena=1时,计数器计数,ena=0时,计数器保持状态不变。

14. 编写带复位和预制控制的十进制加法计数器cnt10_v的Verilog HDL源程序。设电路的预制数据输入端为d[3..0],计数输出端为q[3..0]。时钟输入端为clk。Clrn是复位

控制输入端,当clrn=0时,q[3..0]=0000。ldn是预置控制输入端,当ldn=0时,

q[3..0]=d[3..0].ena是使能控制输入端,当ena=1时,计数器计数,ena=0时,计数器保持状态不变。

15. 利用应用题13设计的cnt6_v和应用题14设计的cnt10_v计数器,设计六十进制计数器cnt60_v。设电路的预置数据输入端为d[7..0],计数输入端为q[7..4](十位数输出)和q[3..0](各位数输出)。时钟输入端为clk。Clrn是复位控制输入端,当clrn=0时,q[7..0]=00000000。Ldn是预制控制器,当ldn=0时,q[7..0]=d[7..0]。ena是使能控制输入端,当ena=1时,计数器计数,ena=0时,计数器保持状态不变。使用Verilog HDL的元件例化语句实现电路设计。

4.4 同步练习参考答案

填空题

1. 模块(module)

2. 端口定义,I/O声明,信号类型声明,功能描述 3. 输入端口,输出端口 4. 输入(input),输出(output),双向(inout) 5. 内部结构,逻辑关系

6. assign语句,元件例化(instantiate),always块语句,initial块语句 7. 数字,未知x,高阻z

8. 二进制,十进制,八进制,十六进制 9. 可打印字符序列,同一行中 10. 数字和$ 11. 1023 12. 不同

13. 单目,双目,三目 14. 右端,0或符号位 15. 1,0,x(未知) 16. 1 17. 3

18. 网络型(nets type),寄存器型(register type) 19. 当前值,历史值

20. reg,integer,real,time 21. assign,= 22. reg(寄存器) 23. <=,reg 24. 假,真

25. posedge,negedge 26. 顺序,并行 27. 系统级(System Level),算法级(Algorithm Level),寄存器传输级(RTL:Register

Transfer Level) 28. 门级(GateLevel),开关级(Switch Level) 单项选择题

1.② 2.② 3.③ 4. ④ 5. ④ 6.④ 7.① 8.④ 9.① 10.③

11.① 12.② 13.① 14.③ 15.② 16.② 17.④ 18.② 19.③ 20.④ 21.① 22.③ 23.② 24.② 25.② 26.④ 27.③ 28.① 29.② 30.③

31.② 32.③ 33.① 34.② 35.① 36.③ 37.③ 38.④ 39.② 40.④ 41.③ 42.① 43.① 44.① 45.② 46.① 47.④ 48.④ 49.① 50.② 应用题

1. 解:该Verilog HDL源程序设计的是8选1数据选择器,d7~d0是数据输入端,s2、s1和s0是控制输入端,y是数据输出端。当s2s1s0=000时,d0数据被选中,输出y=d0;当s2s1s0=001时,d1数据被选中,输出y=d1;依此类推。

2. 解:该Verilog HDL源程序设计8位二进制数据比较器电路。A[7..0]和b[7..0]是两个4位二进制数输入,当a[7..0]〉b[7..0]时,大于输出端gt=1;当a[7..0]

3. 解:该Verilog HDL源程序设计二输入端的8与门电路。8个与门的输入端为a7~a0和b7~b0,输出为y7~y0。该电路可作为8位数据并行开关,a是数据输入,b是数据开关,当b=1时,输出y=a,当b=0时,开关断开,y=0。

4. 解:该Verilog HDL源程序设计下降沿触发的JK触发器电路。

5. 解:该Verilog HDL源程序设计带复位和使能控制的8位二进制加法计数器电路。Clk是时钟输入端。Clr是复位控制输入端,当clr=0时,计数器被复位。ena是使能控制输入端,当ena=1时,计数器工作,ena=0时,计数器状态不变(保持)。在ena=1和clr=1时,电路每进位输出cour=1,产生向高位俄计数进位。

6. 解:16选1数据选择器的Verilog HDL源程序如下: module mux_16_v(y,d,s3,s2,s1,s0);

input s3,s2,s1,s0; input[15:0] d; output y; reg y; always begin

case({s3,s2,s1,s0})

4`b0000: y=d[0]; 4`b0001: y=d[1]; 4`b0010: y=d[2]; 4`b0011: y=d[3]; 4`b0100: y=d[4]; 4`b0101: y=d[5]; 4`b0110: y=d[6]; 4`b0111: y=d[7]; 4`b1000: y=d[8]; 4`b1001: y=d[9]; 4`b1010: y=d[10]; 4`b1011: y=d[11]; 4`b1100: y=d[12]; 4`b1101: y=d[13]; 4`b1110: y=d[14]; 4`b1111: y=d[15]; endcase end

endmodule

在源程序中,d[15..0]是电路的16位数据输入端:s3、s2、s1和s0是选择输入端,当s3~s0=0000时,数据选择器的输出y=d[0],当s3~s0=0001时,输出y=d[1],依此类推。

7. 解:16位二进制数据比较器的Verilog HDL源程序如小: module comp_16_v(a,b,gt,lt,eq);

input[15:0] a,b;

ouput gt,lt,eq; reg gt,lt,eq; always @(a or b) begin

if(a>b)begin

gt=1`b1; lt=1`b0; eq=1`b0; end

else if(a

else if(a==b)begin gt=1`b0;

lt=1`b1; eq=1`b1; end

end

endmodule

在源程序中,a[5..0]和b[15..0]是16位二进制数据比较器的两个16位二进制数输入端,当a[15..0]>b[15..0]时,输出gt=1(表示a大于b),当a[15..0]

7. 解:带置位和复位控制的D型触发器的Verilog HDL源程序如下: module dff_v(d,prd,clr,clk,q,qn);

input d,prd,clr,clk; output q,qn; reg q,qn;

always@(negedge clr,negedge prd,posedge clk) begin

if(~clr) begin q=0;

qn=~q;end else if(~prd) begin q=1; qn=~q;end else begin q=d;

qn=~q;end end

endmodule

在源程序中,prd是D触发器电路的置位端,低电平有效;clr是复位端,低电平有效;d是数据输入端;q和qn是触发器互补输出端。

9. 解:带三态输出的16位D锁存器的Verilog HDL源程序如下: module latch 16_v(clk,clr,ena,q,d)

input[15:0] d;

input clk,clr,ena,oe; output[15:0] q;

reg [15:0] q.q_temp;

always @(posedge clk) begin

if(~clr) q_temp=0;

else if(ena) q_temp=d;

case q_temp=q; if(oe) q=16`bzzzzzzzzzzzzzzzz; else q=q_temp; end endmodule

在源程序中,d[15..0]是16位D锁存器数据输入端;clk是时钟输入端;oe是三态使能控制输入端,高电平有效;q[15..0]是锁存器的输出端。

13. 在计算机中,求补运算用于将一个正数的补码转换为对应的负数的补码,或将一个负数的补码转换为其对应的正数的补码。求补运算的规则是将二进制数补码的全部位(包含符号位)按位取反再加1。根据求补运算规则,8位二进制数求补电路的Verilog HDL源程序如下:

module neg8_v(a,b);

input[7:0] a; output[7:0] b; reg [7:0] b; always @(a) begin b=~a; b=b+1; end endmodule

14. 解:8位二进制数据收发器的Verilog HDL源程序如下: module dtr8_v(a,b,dtr,oen); input dtr,oen; inout[7:0] a,b;

reg [7:0] areg,breg; always @(dtr or a) begin

if(~oen) breg=8`bzzzzzzzz; else if(dtr) brg=a; end

assign b=breg; always @(dtr or b) begin

if(~oen) areg=8`bzzzzzzzz; else if(~dtr) areg=b; end

assign a=areg; endmodule

在源程序中,a[7..0]和b[7..0]是8位二进制数据收发器的输入/输出(双向)端,oen是使能控制端,当oen=0时电路工作,oen=1电路被禁止,a[7..0]和b[7..0]为高阻态,dtr为收发控制端,当dtr=1时,数据由a[7..0]发送到b[7..0],dtr=0时,数据由b[7..0]发送到a[7..0]。

15. 解:8位左移移位寄存器的Verilog HDL源程序如下: module shl8_v(clr,clk,dsl,ldn);

input clr,clk,dsl,ldn; input[7:0] d; output[7:0] q; reg[7:0] q;

always @(posedge clk or posedge clr) begin

if(clr)

begin q=8`b00000000; end else if(~ldn)

begin q=b;end else

begin q[7:1]=q[6:0];q[0]=dsl;emd end endmodule

16. 解:带复位和预置控制的六进制加法计数器cnt6_v和Verilog HDL源程序如下: module cnt6_v(clrn,clk,ena,ldn,d,q,cout);

input clrn,clk,ema,ldn; input[3:0] d; output[3:0] q; output cout; reg[3:0] q; reg cout;

always @(posege clk or negedge clrn) begin

if(~clrn)

begin q=4`b0000;cout=0;end else if(~ldn)

begin q=d;cout=q[2]&&q[0];end else if(ena)

if(q==4`b0101)

本文来源:https://www.bwwdw.com/article/c52v.html

Top