VerilogHDL期末复习
最新Verilog-HDL期末考试复习题资料

【第一章】1、FPGA 芯片的发展主要体现在哪几个方面?未来的发展趋势是什么?答:新型芯片的规模越来越大,成本越来越低,低端的FPGA已逐步取代了传统的数字元件。
先进的ASIC生产工艺已经被用于FPGA的生产,越来越丰富的处理器内核被嵌入到高端的FPGA芯片中,基于FPGA的开发成为一项系统级设计工程。
随着半导体制造工艺的不同提高,FPGA的集成度将不断提高,制造成本将不断降低,其作为替代ASIC来实现电子系统的前景将日趋光明。
2、EDA 技术的优势是什么?答:1.用HDL对数字系统进行抽象的行为与功能描述以及具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的正确性,可以大大降低设计成本,缩短设计周期。
2.EDA工具之所以能够完成各种自动设计过程,关键是有各类库的支持。
3.某些HDL也是文档型的语言,极大地简化了设计文档的管理。
4.EDA具有日益强大的逻辑设计仿真测试技术,极大地提高了大规模系统电子设计的自动化程度。
5.基于EDA技术的设计,由于用HDL表达的成功的专用功能设计在实现目标方面有很大的可选性,它既可以用不同来源的通用FPGA/CPLD实现,也可以直接以ASIC来实现,设计者拥有完全的自主权。
6.EDA技术的设计语言是标准化的,不会由于设计对象的不同而改变;它的开发工具是规范化的,EDA软件平台支持任何标准化的设计语言;它的设计成果是通用性的,IP核具有规范的接口协议。
良好的可移植与可测试性,为系统开发提供了可靠的保证。
7.EDA技术能将所有设计环节纳入统一的自顶向下的设计方案中。
8.EDA不但在整个设计流程上充分利用计算机的自动设计能力,在各个设计层次上利用计算机完成不同内容的仿真模拟,而且在系统板设计结束后仍可利用计算机对硬件系统进行完整全面的测试。
3、EDA 的设计流程包括哪几个环节?ANS: ①设计输入(原理图/HDL 文本编辑)②综合③FPGA/CPLD 适配④时序仿真与功能门级仿真⑤FPGA/CPLD 编程下载⑥FPGA/CPLD 器件电路硬件检测。
Verilog 复习考试总结

3Verilog1.Verilog HDL是一种硬件描述语言,用于从算法级、RTL级、门级到开关级的多种抽象设计层次的数字系统建模。
令行为级描述:数据结构和过程类似C;用于描述算法级和RTL级的Verilog模型。
令结构级描述:用于描述门级和开关级电路;特点:支持门级延时信息和驱动能力等的描述。
VHDL侧重于系统级描述,从而更多的为系统级设计人员所采用;Verilog侧重于电路级描述,从而更多的为电路级设计人员所采用。
2. Verilog HDL设计入门模块(module)模块是Verilog 的基本描述单位模块的定义从关键词module开始,到关键词endmodule结束每条Verilog HDL语句以分号“;”作为结束模块的基本结构(1)、模块定义行以module开头接着给出所定义模块的;模块名括号内给出端口名列表(端口名等价于硬件中的外接引脚,模块通过这些端口与外界发生联系)以分号结束(2)、端口类型说明端口类型只有input、output、inout三种(3)、数据类型说明支持的数据类型有连线类(wire)和寄存器(reg)类两个大类一位宽的wire类可被缺省外,其它凡将在在后面的描述中出现的变量都应给出相应的数据类型说明(4)、描述体部具体)展开对模块的描述(5)、结束行用关键词endmodule标志模块定义的结束它的后面没有分号令行为描述(Behavior)描述行为或功能特性令结构描述(Structure)描述通过什么样的结构方式将不同的实体连接起来用以实现所要求的行为或功能。
测试与仿真令测试平台(Test Bench):在输入端口加入测试信号,从输出端口检测其输出结果是否正确。
令通常将需要测试的对象称之为DUT (Device Under Test)。
令测试模块:要调用DUT;包含用于测试的激励信号源;能够实施对输出信号的检测,并报告检测的结果。
过程语句令Initial:只顺序地执行一次;没有触发条件。
verilog期末知识点总结

verilog期末知识点总结Verilog是一种硬件描述语言(HDL),用于描述数字电路。
它适用于设计和验证数字电路,以及编写仿真测试程序。
本文将总结Verilog的一些重要知识点,包括语法结构、模块化设计、时钟和同步电路、测试和调试等内容。
1. 语法结构Verilog的语法结构类似于C语言,包括模块声明、信号声明、组合逻辑和时序逻辑描述等。
模块声明以module关键字开始,用于定义一个模块,并使用endmodule结束。
信号声明包括输入、输出和内部信号,可以使用wire或reg关键字定义。
组合逻辑描述使用assign关键字和逻辑运算符描述输出信号与输入信号的关系。
时序逻辑描述使用always块和@关键字描述时钟触发事件,以及使用去块开始描述触发事件发生时的行为。
2. 模块化设计Verilog支持模块化设计,可以通过实例化和连接模块来完成整个电路的设计。
模块包括顶层模块和子模块,通过端口连接来进行通信。
顶层模块可以实例化多个子模块,并且可以在端口上进行信号连接,以及进行层次化的设计。
模块化设计可以提高代码的可读性和维护性,以及方便进行功能调试和验证。
3. 时钟和同步电路Verilog中的时序逻辑是通过时钟触发事件来控制的,常用的时钟触发事件是posedge和negedge,用于描述信号的上升沿和下降沿。
时序逻辑通常包括寄存器、时钟、复位和延迟等内容。
同步电路是一种使用时钟控制的电路,用于避免因异步时序引起的问题,如时序冲突和信号竞争等。
Verilog中可以使用always块和@关键字,以及使用posedge和negedge关键字来描述同步电路的行为。
4. 测试和调试Verilog支持使用仿真工具来进行电路的测试和调试。
常用的仿真工具包括ModelSim、VCS、NCVerilog等,可以对Verilog代码进行仿真、波形查看和时序约束验证等。
在进行测试和调试时,可以使用testbench来模拟输入信号,以及使用检验器来验证输出信号。
verilogHDL语言复习归纳

verilog HDL语言复习归纳2010-11-10 17:39:46| 分类:FPGA|字号订阅1、用module endmodule定义一个模块;module后跟模块名称后跟端口列表如module myaddr(a,b,c);2、端口类型包括输入input、输出output、输入&输出inout。
3、变量可以定义为wire和reg型,变量要放在begin...end內,则该变量就需要使用reg,在begin...end之外,则使用wire;4、在定义变量的时候使用的格式是:变量定义:<type> <size、wide> <parameter>其中要注意的是第二个位置的地方,必须定义线宽,否则会出现意想不到的错误。
在端口类型定义和在变量类型定义的时候都要加上线宽。
wire 为线形变量reg 为寄存器型变量5、逻辑功能描述的三种方法用assign描述逻辑功能,always描述、创建实例来描述。
assign用来描述直接建立输出和输入信号的某种联系;如assign a=b|c; assign a=b&c; assign a=b+c; assign a=b*c;always用来描述一些比较复杂的组合逻辑及时序逻辑后面跟上@ 表示在什么情况下触发执行,类似于触发器。
*标识敏感列表(所有输入信号有变化的时候都触发)。
触发可以是电平触发,也可以是上升沿或者是下降沿触发,分别跟posedge negedge,如always @(posedge clk0 or negedge clk1)assign和always语句都是并发执行的,需要顺序执行则要加上begin end,如'timescale 100ns/100ns......................begin#1 a=b;#1 b=c;end执行顺序是先过100ns执行a=b,再经过100ns执行b=c。
EDA-Verilog HDL期末复习题总结必过

选择题1.大规模可编程器件主要有FPGA、CPLD 两类,下列对FPGA 结构与工作原理的描述中,正确的是(C)。
A.FPGA 全称为复杂可编程逻辑器件;B.FPGA 是基于乘积项结构的可编程逻辑器件;C.基于SRAM 的FPGA 器件,在每次上电后必须进行一次配置;D.在Altera 公司生产的器件中,MAX7000 系列属FPGA 结构。
2.不完整的IF语句,其综合结果可实现(A)A. 时序逻辑电路B.组合逻辑电C. 双向电路D. 三态控制电路3.综合是EDA设计流程的关键步骤,在下面对综合的描述中,(D)是错误的。
A.综合就是把抽象设计层次中的一种表示转化成另一种表示的过程;B.综合就是将电路的高级语言转化成低级的,可与FPGA / CPLD的基本结构相映射的网表文件;C.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束;D.综合可理解为一种映射过程,并且这种映射关系是唯一的,即综合结果是唯一的。
4.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是( C )。
A.FPGA全称为复杂可编程逻辑器件;B.FPGA是基于乘积项结构的可编程逻辑器件;C.基于SRAM的FPGA器件,在每次上电后必须进行一次配置;D.在Altera公司生产的器件中,MAX7000系列属FPGA结构。
5.以下关于状态机的描述中正确的是(B)A.Moore型状态机其输出是当前状态和所有输入的函数B.与Moore型状态机相比,Mealy型的输出变化要领先一个时钟周期C.Mealy型状态机其输出是当前状态的函数D.以上都不对6.目前应用最广泛的硬件描述语言是(B)。
A. VHDLB. Verilog HDLC. 汇编语言D. C语言7.一模块的I/O 端口说明:“input [7:0] a;”,则关于该端口说法正确的是( A )。
A. 输入端口,位宽为8B. 输出端口,位宽为8C. 输入端口,位宽为7D. 输出端口,位宽为78.基于EDA 软件的FPGA / CPLD 设计流程为:原理图/HDL 文本输入→综合→___ __→→适配→编程下载→硬件测试。
VerilogHDL复习题与答案

VerilogHDL硬件描述语言复习一、1. Verilog HDL 是在哪一年首次被I E E E标准化的?答:Verilog HDL是在1995年首次被IEEE标准化的。
2. Verilog HDL支持哪三种根本描述方式?答:Verilog HDL可采用三种不同方式或混合方式对设计建模。
这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;构造化方式—使用门和模块实例语句描述建模3. Verilog HDL 是由哪个公司最先开发的?答:Verilog HDL是由Gateway Design Automation公司最先开发的4. Verilog HDL中的两类主要数据类型什么?答:线网数据类型和存放器数据类型。
线网类型表示构件间的物理连线,而存放器类型表示抽象的数据存储元件。
5. U D P代表什么?答:UDP代表用户定义原语6. 写出两个开关级根本门的名称。
答:pmos nmos7.写出两个根本逻辑门的名称。
答:and or8.在数据流描述方式中使用什么语句描述一个设计?答:设计的数据流行为使用连续赋值语句进展描述9. 采用构造描述方式描述1位全加器。
答:module full_add(a,b,cin,s,co);input a,b,cin;output s,co;wire S1,T1,T2,T3;xorX1(S1,a,b),X2(s,S1,cin);andA1(T3,a,b),A2(T2,b,cin),A3(T1,a,cin);orO1(co,T1,T2,T3);endmodule10. i n i t i a l语句与always 语句的关键区别是什么?答: 1) initial语句:此语句只执行一次。
2) always语句:此语句总是循环执行, 或者说此语句重复执行。
11.采用数据流方式描述2 - 4译码器。
答:'timescale 1ns/nsmodule Decoder2×4(A,B,EN,Z);input A,B,EN;output [0:3]Z;wire abar,Bbar;assign #1 Abar=~A;assign #1 Bbar=~B;assign #2 Z[0]=~(Abar&Bbar&EN);assign #2 Z[1]=~(Abar&B&EN);assign #2 Z[2]=~(A&Bbar&EN);assign #2 Z[3]=~(A&B&EN);endmodule1 2. 找出下面连续赋值语句的错误。
VerilogHDL复习题与答案

VerilogHDL硬件描述语言复习一、1. Verilog HDL 是在哪一年首次被I E E E标准化的?答:Verilog HDL是在1995年首次被IEEE标准化的。
2. Verilog HDL支持哪三种基本描述方式?答:Verilog HDL可采用三种不同方式或混合方式对设计建模。
这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模3. Verilog HDL 是由哪个公司最先开发的?答:Verilog HDL是由Gateway Design Automation公司最先开发的4. Verilog HDL中的两类主要数据类型什么?答:线网数据类型和寄存器数据类型。
线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
5. U D P代表什么?答:UDP代表用户定义原语6. 写出两个开关级基本门的名称。
答:pmos nmos7.写出两个基本逻辑门的名称。
答:and or8.在数据流描述方式中使用什么语句描述一个设计?答:设计的数据流行为使用连续赋值语句进行描述9. 采用结构描述方式描述1位全加器。
答:module full_add(a,b,cin,s,co);input a,b,cin;output s,co;wire S1,T1,T2,T3;xorX1(S1,a,b),X2(s,S1,cin);andA1(T3,a,b),A2(T2,b,cin),A3(T1,a,cin);orO1(co,T1,T2,T3);endmodule10. i n i t i a l语句与always 语句的关键区别是什么?答: 1) initial语句:此语句只执行一次。
2) always语句:此语句总是循环执行, 或者说此语句重复执行。
11.采用数据流方式描述2 - 4译码器。
答:'timescale 1ns/nsmodule Decoder2×4(A,B,EN,Z);input A,B,EN;output [0:3]Z;wire abar,Bbar;assign #1 Abar=~A;assign #1 Bbar=~B;assign #2 Z[0]=~(Abar&Bbar&EN);assign #2 Z[1]=~(Abar&B&EN);assign #2 Z[2]=~(A&Bbar&EN);assign #2 Z[3]=~(A&B&EN);endmodule1 2. 找出下面连续赋值语句的错误。
verilog语言期末试题及答案

verilog语言期末试题及答案一、填空题1. Verilog语言是一种_硬件描述语言_。
2. Verilog语言适用于_数字电路设计_和_验证_。
3. Verilog的编译和仿真工具主要有_Synopsys Design Compiler_和_ModelSim_。
4. Verilog中的组合逻辑使用_always_关键字实现。
5. 时钟的上升沿触发使用_posedge_关键字实现。
6. Verilog的层次化模块定义使用_和号_(&)和_连接符_实现。
7. Verilog语言的数据类型包括_bit_、_reg_、_wire_和_logic_。
8. Verilog中用来控制模拟时间的关键字是_#_。
9. 顺序逻辑使用的关键字是_always_ff_。
10. Verilog的条件语句包括_if_、_else_和_case_。
二、选择题1. Verilog中的关键字always @(posedge clk)表示:A. 在时钟上升沿触发B. 在时钟下降沿触发C. 在时钟上升沿或下降沿触发D. 无关键字触发答案:A2. Verilog中用来定义模块的关键字是:A. alwaysB. moduleC. caseD. reg答案:B3. 下列哪个关键字用于在连续赋值中实现多路选择:A. ifB. elseC. caseD. always_ff答案:C4. Verilog中用来延时模拟时间的关键字是:A. #B. @C. $D. %答案:A5. Verilog中的数据类型wire和reg的区别在于:A. wire用于内部信号连接,reg用于存储数据B. wire只能传输数字信号,reg可以传输任意信号C. wire用于组合逻辑,reg用于时序逻辑D. wire在连续赋值中使用,reg在时序赋值中使用答案:A三、编程题请使用Verilog语言描述一个4位全加器模块,并画出其电路原理图。
```verilogmodule full_adder(input a, b, cin, output sum, cout);assign sum = a ^ b ^ cin;assign cout = (a & b) | (a & cin) | (b & cin);endmodule```四、简答题1. 请简述Verilog语言的优点及应用领域。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件扩展名为v,大小写敏感;所有关键字必须小写;
标识符(区分大小写)
合法字符:26个大小写英文字母;数字0-9;下划线;$等;
命名规则:以英文字母或下划线开头;不能出现两条(或以上)连续的下划线;不能和关键字重复。
数据对象:
1、常数:整数、实数和字符串。
整数可综合,实数和字符串不可综合。
(1)整数:<位宽>’<进制符号><数字>
位宽:数字对应的二进制数的位数;
进制符号包括:b或B(二进制),d或D(十进制),o或O(八进制),h或H(十六进制)。
数字中间可用下划线分隔,提高可读性。
十进制数的位宽和进制符号可省略。
若只标进制,未注明位宽,则位宽为(单个位的该进制数对应二进制位宽*该进制数的位数)。
若指明的位宽比数字需要的位宽小,则从左边(高位)截去多余位。
除十进制外,数字中可用x或X(未知),z或Z(高
阻)。
位数由所在数字格式决定。
如'hfx等价于'b1111xxxx
整数可在其前面加负号,负数的实际值为其对应的二进制补码。
(2)实数
(3)字符串
2、变量
(1)网络型(net type)
net型变量的输出值始终根据输入变化而变化,一般用来定义硬件电路中的各种连线。
wire型变量是net型变量中最常用的一种,其取值可以是0、1、x或z。
wire、tri:连线类型,功能完全相同;tri名称仅为增加程序可读性,表示综合后电路有三态功能。
wor、trior:具有线或特性的连线,功能相同。
wand、triand:具有线与特性的连线,功能相同。
tri1、tri0:分别为上拉电阻和下拉电阻。
supply1、supply0:分别为电源(逻辑1)和地(逻辑0)。
(2)寄存器型(register type)
reg:常用的寄存器型变量。
(可综合)
integer:32位带符号整数型变量。
(不同资料中可
综合性表述不同)
real:64位带符号实数型变量。
(不可综合,表示实数寄存器)
time:无符号时间型变量。
(不可综合,模拟时间的存储与处理)
wire与reg区别:reg需要被明确赋值,且被重新赋值前一直保持原值。
wire在assign语句和元件例化语句中赋值;reg放在always和initial等语句中,通过过程中的赋值语句进行赋值。
操作符:
(1)、算术操作符:+(加),-(减),*(乘),/(除),%(求余),**(乘方)。
(2)、逻辑操作符:&&(逻辑与),||(逻辑或),!(逻辑非)。
操作数是位矢量时,无论有多少个位,逻辑操作符运算结果只有1位,为0或1。
逻辑操作符先分别对两个操作数中位进行“按位或”操作,再对两操作数的“按位或”结果进行指定的逻辑操作
(3)、位运算操作符:~(按位取反),&(按位与),|(按位或),^(按位异或),^~或~^(按位同或)。
进行位运算时,两个操作数位宽不同时,自动按右端对齐,位数少的在高位用0补齐。
数据均只有一个位时,位运算与逻辑操作符运算结果相同,逻辑操作运算可用位运算替代。
(4)、缩减操作符:&(与),~&(与非),|(或),~|(或非),^(异或),^~或~^(同或)
缩减运算操作数只有一个,运算法则与逻辑运算相同,无论操作数有多少个位,运算结果只有一位,为0或1,相当于一个多输入端的逻辑门。
(5)、关系操作符:<(小于),<=(小于等于),>(大于),>=(大于等于)。
关系操作运算结果是1位逻辑值。
关系是真,结果为1;关系是假,结果为0;如果某个操作数的值不确定,则结果不确定,为未知x或X。
(6)、等值操作符:= =(等于),!=(不等于),= = =(全等于),!= =(不全等于)。
等值操作运算结果是1位逻辑值。
关系是真,结果为1;关系是假,结果为0。
用等于(= =)操作符时,两个操作数的二进制位必须逐位相等,比较结果才为1,否则为0;当两操作数中某些位是未知或高阻时,对应位比较结果为不确定值,最终比较结果为0。
用
全等于(= = =)操作符时,将未知和高阻都当成确定的值进行比较,对应位比较结果为确定值。
(7)、转移操作符:>>(右移)、<<(左移)。
操作数>>n //右移n位,左边用0填补;
操作数<<n //左移n位,右边用0填补;
(8)、条件操作符:?
操作数=条件表达式?表达式1:表达式2;
条件操作符有3个操作数,当条件表达式为真时,操作数=表达式1;当条件表达式为假时,操作数=表达式2。
(9)、并接操作符:{}
并接操作符可以将多个操作数按二进制位拼接起来,构成一个新的操作数,多个操作数间用逗号分隔。
模块语句:
module 模块名(模块端口列表);
模块端口和模块功能描述
end module
模块端口列表须列出所有端口,用逗号分隔。
端口定义:(三种模式)
input 输入端口名表(逗号分隔);
output 输出端口名表(逗号分隔);
inout 双向端口名表(逗号分隔);
总线型端口:如input [msb:lsb] 端口名;
基本逻辑门赋值语句
格式为:基本逻辑门关键字(门输出,门输入1,门输入2,……,门输入n);
基本逻辑门关键字是Verilog HDL预定义的逻辑门,包括and、or、not、xor、nand、nor等。
例:and (y,a,b,c,d);与assign y=a&b&c&d;等效。
连续赋值语句
连续赋值语句用assign引导,赋值符为“=”,“=”两边的变量都是wire型变量,输出跟随输入变化,反映了信号传送的连续性。
格式为:assign 目标变量=表达式;
过程赋值语句(包括阻塞式赋值和非阻塞式赋值)
过程赋值语句出现在initial和always语句中,赋值符为“=”或“<=”
阻塞式赋值:目标变量=表达式;按从上到下的顺序一
条一条执行,前面的赋值语句没有执行完成,后面的赋值语句如同被阻塞一样,不能执行。
非阻塞式赋值:目标变量<=表达式;各赋值语句依次启动,在initial和always语句结束时同时完成。
条件语句(if和case)
if语句格式:
if(表达式)begin 语句; end
else if (表达式) begin 语句; end
else begin 语句; end
if(表达式)begin 语句; end
else begin 语句; end
if(表达式)begin 语句; end
case语句格式:
case(表达式)
选择值1:begin 语句; end
选择值2:begin 语句; end
……
选择值n:begin 语句; end
default: begin 语句; end
end case
执行case语句时,先计算表达式的值,然后执行与其值相同的分支;如果没有选择值与表达式的值相同,则执行default分支。
表达式的值必须在选择值的范围中,且数据类型必须匹配。
与VHDL不同,各分支选择值不要求互斥,当多个分支选择值同时满足表达式取值时,将执行最先满足表达式的分支项,然后跳出case语句,不再检测其它分支。
casez语句和casex语句:在casez语句中,如果分支表达式某些位的值为高阻z,则对这些位的比较就不予考虑;在casex语句中,把不予考虑的位扩展到未知x,只考虑z和x之外其它位的比较结果。
循环语句:包括for语句,repeat语句,while语句,forever语句
for语句格式:
for(索引变量=初值;索引变量<终值;索引变量=索引变量+步长值)
begin 语句;end
repeat语句格式:
repeat(循环次数表达式)begin 语句;end
有些EDA软件不支持repeat语句。
while语句格式:
while(循环执行条件表达式)begin 重复执行的语句;修改循环条件的语句;end
循环执行条件表达式为真则执行,否则不执行。
forever语句格式:
forever begin 语句;end
forever 是无穷循环控制语句,常用来产生周期性的波形,作为仿真激励信号。
always语句:
always(敏感信号表达式)
begin
语句;
end
敏感信号表达式中应该列出影响always语句块内取值的所有变量,多个变量间用or或逗号分隔;当敏感信号表达式中任何变量发生变化,就会执行一遍块内的语句。
在时序电路的描述中,可用posedge和
negedge声明上升沿和下降沿。
边沿触发型变量在always内部不能再出现。
元件例化语句:
<模块元件名><例化元件名>(.例化元件端口(例化元件外接端口名),……)。