实验二硬件描述语言(VerilogHDL)软件基本使用方法综述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⑴ Verilog简介 • Verilog语言是1983年由GDA(Gateway Design Automation)公司的Phil Moorby首创的,之后 Moorby又设计了Verilog-XL仿真器,Verilog-XL 仿真器大获成功,也使得Verilog语言得到推广使用。 • 1989年,Cadence收购了GDA,1990年, Cadence公开发表了Verilog HDL,并成立了OVI 组织专门负责Verilog HDL的发展。 • Verilog于1995年成为IEEE标准,称为IEEE Standard 1364-1995(Verilog-1995) • IEEE“1364-2001”标准(Verilog-2001)也获得通 过,多数综合器、仿真器都已支持Verilog-2001标 准
也可以将半加器程序描述如下,直接修改上面程序,编译、仿真结果也是相同的。
//运用了位置连接符{}
这种描述更接近电路系统设计的行为描述,是这种硬件描述语言优势之 处,它不需了解硬件具体结构是如何实现,只给出所要实现的电路功能就可 以设计数字电路系统。其生成的电路结构如图。
2、设计一个时序电路:D触发器
更多控制端口设置
lpm_counter计数器功能仿真波形
模24方向可控计数器电路
EDA课程 实验二
硬件描述语言(Verilog HDL)软件介绍与基本使用
EDA课组
一、实验目的:
1、了解Verilog HDL软件特点; 2、学习Verilog HDL软件设计数字系统基本方 法;
二、实验内容
1、 Verilog HDL软件功能介绍。 2、 设计几种简单数字电路系统。
1、 Verilog HDL软件功能介绍。
基于宏功能模块的设计
Megafunction库是Altera提供的参数化模块库。 从功能上看,可以把Megafunction库中的元器件分 为: 算术运算模块(arithmetic) 逻辑门模块(gates) 储存模块(storage) IO模块(I/O)
算数运算模块库
通过乘法器宏模块(lpm_mult)设计一个乘法器
参数化乘法器lpm_mult宏功能模块的基本参数表
(1)调用lpm_mult(同样建立工程和原理图文 件,插入宏模块。)
(2)lpm_mult参数设置
输入输出位宽设置
乘法器类型设置
(3)编译仿真
8位有符号乘法器电路
功能仿真波形
计数器模块设计
计数器输出端口宽度和计数方向设置
计数器模和控制端口设置
⑶、Verilog模块的结构 ( 例如“数字选择”电路)
module sel(a,b,s,y); /* 模块名为sel,端口列表a,b,s ,y */ input a,b,s; //模块的输入端口为a,b,s output y; //模块的输出端口为y reg y; //定义信号的数据类型 always@(a,b,s) begin //逻辑功能描述 if(s) y=b; else y=a; end endmodule
⑷Verilog模块的结构特点 • Verilog程序是由若干模块构成的。每个模块的内容 都嵌在module和endmodule两个关键字之间;每个 模块实现特定的逻辑功能。 • 每个模块首先要进行端口定义,并说明输入和输出 口(input、output或inout),然后对模块的功能 进行定义。 • Verilog程序书写格式自由,一行可以写几个语句, 一个语句也可以分多行写,。 • 除了wk.baidu.comndmodule等少数语句外,每个语句的最后必 须有分号。 • 可用 /*……*/ 和 //……对Verilog程序作注释。 • Verilog程序书写区分大小写,关键字必须小写。
下面的clk,d分布是时钟输入信号和输入信号;q,qb是触发器输出端和负 逻辑输出端。
//时钟上升沿有效
⑶保存,编译,无错误进入波形设置状态,最后进行时序仿真,可以看到符 合D触发器要求。
编译结果报告如下:
生成的逻辑电路结构图:
实验报告作业
通过Verilog HDL软 件设计一位二进制全加 器。给出设计过程,并 仿真验证。
编译通过后系统信息窗口:报告相关的使用芯片类型、使用的逻辑元素个数 等信息
⑷建立波形文件,设置相关端口信号,同实验一基本相同,设置之后保存波形文 件,重新进行编译。
⑸点击时序仿真按钮,进行仿真,观察结果可知完全符合数字选择电路功能。 这种通过Verilog HDL编程实现的功能与电路设计完成的功能完全相同。
将该逻辑关系用Verilog HDL语言描述出来,及进行源文件的输入: //定义输入端口 //定义输出端口 //异或输出 //与输出
⑵进行文件编译,无错误后建立波形文件,设置相应端口及波形,保存后进行时 序仿真。
从以上图示可知完全符合半加器逻辑关系, 其生成的电路如图。
观察硬件描述语言所生成的逻辑电路,点击tools→Netlist viewers →RTL viewer,有如下生成的电路,可见与实验一电路设计方法的原始逻辑电路相同,充分 说明用软件描述方法是可以完全设计所要求电路,这种方法是设计复杂逻辑控制电路 最有效方法。
⑸Verilog 模块的模板
•module <顶层模块名> (<输入输出端口列表>); •output 输出端口列表; //输出端口声明 •input 输入端口列表; //输入端口声明 •/*定义数据,信号的类型,函数声明*/ •reg 信号名; •//逻辑功能定义 •assign <结果信号名>=<表达式>; //使用assign语句定义逻辑功能 •//用always块描述逻辑功能 •always @ (<敏感信号表达式>) • begin • //过程赋值 • //if-else,case语句 • //while,repeat,for循环语句 • //task,function调用 • end •//调用其它模块 • <调用模块名module_name > <例化模块名> (<端口列表port_list >); •//门元件例化 • 门元件关键字 <例化门元件名> (<端口列表port_list>); •endmodule
Ai 0 0 0 0 1 1 1 1
Si Ai Bi Cin Cout Ai Bi Cin ( Ai Bi )
输入 Bi 0 0 1 1 0 0 1 1
Cin 0 1 0 1 0 1 0 1
输出 Si Cout 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1
补充内容
⑹观察生成的电路,点击tools→Netlist viewers →RTL viewer。
三、实验步骤
1、采用Verilog HDL硬件描述语言设计一个二进制半加器。
⑴同样采用前面步骤,新建工程目录、工程文件及源文件,名字皆为h_adder
根据二进制半加器原理可知有如下逻辑关系
S A B AB A B C AB
⑵Verilog语言的特点
• 既适于可综合的电路设计,也可胜任电路与系统的仿真。 • 能在多个层次上对所设计的系统加以描述,从开关级、门级、 寄存器传输级(RTL)到行为级,都可以胜任,同时语言不 对设计规模施加任何限制。 • 灵活多样的电路描述风格,可进行行为描述,也可进行结构 描述;支持混合建模,在一个设计中各个模块可以在不同的 设计层次上建模和描述。 • Verilog的行为描述语句,如条件语句、赋值语句和循环语 句等,类似于软件高级语言,便于学习和使用。 • 内置各种基本逻辑门,便于进行门级结构描述;内置各种开 关级元件,可进行开关级的建模。 • 易学易用,功能强,可满足各个层次设计人员的需要。
⑴列出逻辑真值表 真值表
Q
Q
clk
D
D Qn(当前状态) Qn+1 (时钟有效沿输入时对应d的输出状态) 0 0 0 clk 0 1 0 1 0 1 1 1 1
由真值表可知,当clk=0时,触发器处于维持状态;当clk上升沿到来时, 它下一个状态的输出完全由输入状态决定,与当前状态无关,即Qn+1=D。 ⑵建立工程及文件sy_d_ff,输入源程序如下:
⑵点击新建文件按钮
,进入下面选择界面,选择Verilog HDL File→OK
进入文本编辑状态,输入源程序,要注意书 写格式,关键字一般是蓝色。
⑶保存,点击编译按钮,检查设计中的语法错误,若有错误将根据提示修改程 序中的错误,并重新编译,直到没有错误为止。若通过将给出相关设计信息。
错误信息提示窗口:
2、 Verilog设计过程(以数字选择器为例)
⑴建立工程 点击file→new project wizard,新建工程目录和工程文件sel,得如图所示。
Next后进入工程文件选择,输入新文件sel,必须注意该文件名必须与 将要编辑的程序模块名相同。
以后的过程就如实验一一样进行相关设计直到完成。
也可以将半加器程序描述如下,直接修改上面程序,编译、仿真结果也是相同的。
//运用了位置连接符{}
这种描述更接近电路系统设计的行为描述,是这种硬件描述语言优势之 处,它不需了解硬件具体结构是如何实现,只给出所要实现的电路功能就可 以设计数字电路系统。其生成的电路结构如图。
2、设计一个时序电路:D触发器
更多控制端口设置
lpm_counter计数器功能仿真波形
模24方向可控计数器电路
EDA课程 实验二
硬件描述语言(Verilog HDL)软件介绍与基本使用
EDA课组
一、实验目的:
1、了解Verilog HDL软件特点; 2、学习Verilog HDL软件设计数字系统基本方 法;
二、实验内容
1、 Verilog HDL软件功能介绍。 2、 设计几种简单数字电路系统。
1、 Verilog HDL软件功能介绍。
基于宏功能模块的设计
Megafunction库是Altera提供的参数化模块库。 从功能上看,可以把Megafunction库中的元器件分 为: 算术运算模块(arithmetic) 逻辑门模块(gates) 储存模块(storage) IO模块(I/O)
算数运算模块库
通过乘法器宏模块(lpm_mult)设计一个乘法器
参数化乘法器lpm_mult宏功能模块的基本参数表
(1)调用lpm_mult(同样建立工程和原理图文 件,插入宏模块。)
(2)lpm_mult参数设置
输入输出位宽设置
乘法器类型设置
(3)编译仿真
8位有符号乘法器电路
功能仿真波形
计数器模块设计
计数器输出端口宽度和计数方向设置
计数器模和控制端口设置
⑶、Verilog模块的结构 ( 例如“数字选择”电路)
module sel(a,b,s,y); /* 模块名为sel,端口列表a,b,s ,y */ input a,b,s; //模块的输入端口为a,b,s output y; //模块的输出端口为y reg y; //定义信号的数据类型 always@(a,b,s) begin //逻辑功能描述 if(s) y=b; else y=a; end endmodule
⑷Verilog模块的结构特点 • Verilog程序是由若干模块构成的。每个模块的内容 都嵌在module和endmodule两个关键字之间;每个 模块实现特定的逻辑功能。 • 每个模块首先要进行端口定义,并说明输入和输出 口(input、output或inout),然后对模块的功能 进行定义。 • Verilog程序书写格式自由,一行可以写几个语句, 一个语句也可以分多行写,。 • 除了wk.baidu.comndmodule等少数语句外,每个语句的最后必 须有分号。 • 可用 /*……*/ 和 //……对Verilog程序作注释。 • Verilog程序书写区分大小写,关键字必须小写。
下面的clk,d分布是时钟输入信号和输入信号;q,qb是触发器输出端和负 逻辑输出端。
//时钟上升沿有效
⑶保存,编译,无错误进入波形设置状态,最后进行时序仿真,可以看到符 合D触发器要求。
编译结果报告如下:
生成的逻辑电路结构图:
实验报告作业
通过Verilog HDL软 件设计一位二进制全加 器。给出设计过程,并 仿真验证。
编译通过后系统信息窗口:报告相关的使用芯片类型、使用的逻辑元素个数 等信息
⑷建立波形文件,设置相关端口信号,同实验一基本相同,设置之后保存波形文 件,重新进行编译。
⑸点击时序仿真按钮,进行仿真,观察结果可知完全符合数字选择电路功能。 这种通过Verilog HDL编程实现的功能与电路设计完成的功能完全相同。
将该逻辑关系用Verilog HDL语言描述出来,及进行源文件的输入: //定义输入端口 //定义输出端口 //异或输出 //与输出
⑵进行文件编译,无错误后建立波形文件,设置相应端口及波形,保存后进行时 序仿真。
从以上图示可知完全符合半加器逻辑关系, 其生成的电路如图。
观察硬件描述语言所生成的逻辑电路,点击tools→Netlist viewers →RTL viewer,有如下生成的电路,可见与实验一电路设计方法的原始逻辑电路相同,充分 说明用软件描述方法是可以完全设计所要求电路,这种方法是设计复杂逻辑控制电路 最有效方法。
⑸Verilog 模块的模板
•module <顶层模块名> (<输入输出端口列表>); •output 输出端口列表; //输出端口声明 •input 输入端口列表; //输入端口声明 •/*定义数据,信号的类型,函数声明*/ •reg 信号名; •//逻辑功能定义 •assign <结果信号名>=<表达式>; //使用assign语句定义逻辑功能 •//用always块描述逻辑功能 •always @ (<敏感信号表达式>) • begin • //过程赋值 • //if-else,case语句 • //while,repeat,for循环语句 • //task,function调用 • end •//调用其它模块 • <调用模块名module_name > <例化模块名> (<端口列表port_list >); •//门元件例化 • 门元件关键字 <例化门元件名> (<端口列表port_list>); •endmodule
Ai 0 0 0 0 1 1 1 1
Si Ai Bi Cin Cout Ai Bi Cin ( Ai Bi )
输入 Bi 0 0 1 1 0 0 1 1
Cin 0 1 0 1 0 1 0 1
输出 Si Cout 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1
补充内容
⑹观察生成的电路,点击tools→Netlist viewers →RTL viewer。
三、实验步骤
1、采用Verilog HDL硬件描述语言设计一个二进制半加器。
⑴同样采用前面步骤,新建工程目录、工程文件及源文件,名字皆为h_adder
根据二进制半加器原理可知有如下逻辑关系
S A B AB A B C AB
⑵Verilog语言的特点
• 既适于可综合的电路设计,也可胜任电路与系统的仿真。 • 能在多个层次上对所设计的系统加以描述,从开关级、门级、 寄存器传输级(RTL)到行为级,都可以胜任,同时语言不 对设计规模施加任何限制。 • 灵活多样的电路描述风格,可进行行为描述,也可进行结构 描述;支持混合建模,在一个设计中各个模块可以在不同的 设计层次上建模和描述。 • Verilog的行为描述语句,如条件语句、赋值语句和循环语 句等,类似于软件高级语言,便于学习和使用。 • 内置各种基本逻辑门,便于进行门级结构描述;内置各种开 关级元件,可进行开关级的建模。 • 易学易用,功能强,可满足各个层次设计人员的需要。
⑴列出逻辑真值表 真值表
Q
Q
clk
D
D Qn(当前状态) Qn+1 (时钟有效沿输入时对应d的输出状态) 0 0 0 clk 0 1 0 1 0 1 1 1 1
由真值表可知,当clk=0时,触发器处于维持状态;当clk上升沿到来时, 它下一个状态的输出完全由输入状态决定,与当前状态无关,即Qn+1=D。 ⑵建立工程及文件sy_d_ff,输入源程序如下:
⑵点击新建文件按钮
,进入下面选择界面,选择Verilog HDL File→OK
进入文本编辑状态,输入源程序,要注意书 写格式,关键字一般是蓝色。
⑶保存,点击编译按钮,检查设计中的语法错误,若有错误将根据提示修改程 序中的错误,并重新编译,直到没有错误为止。若通过将给出相关设计信息。
错误信息提示窗口:
2、 Verilog设计过程(以数字选择器为例)
⑴建立工程 点击file→new project wizard,新建工程目录和工程文件sel,得如图所示。
Next后进入工程文件选择,输入新文件sel,必须注意该文件名必须与 将要编辑的程序模块名相同。
以后的过程就如实验一一样进行相关设计直到完成。