PPT课件----西电出版社《Verilog HDL数字设计教程》 第2章 Verilog HDL基本概念

上传人:E**** 文档编号:89357304 上传时间:2019-05-23 格式:PPT 页数:65 大小:1.51MB
返回 下载 相关 举报
PPT课件----西电出版社《Verilog HDL数字设计教程》 第2章 Verilog HDL基本概念_第1页
第1页 / 共65页
PPT课件----西电出版社《Verilog HDL数字设计教程》 第2章 Verilog HDL基本概念_第2页
第2页 / 共65页
PPT课件----西电出版社《Verilog HDL数字设计教程》 第2章 Verilog HDL基本概念_第3页
第3页 / 共65页
PPT课件----西电出版社《Verilog HDL数字设计教程》 第2章 Verilog HDL基本概念_第4页
第4页 / 共65页
PPT课件----西电出版社《Verilog HDL数字设计教程》 第2章 Verilog HDL基本概念_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《PPT课件----西电出版社《Verilog HDL数字设计教程》 第2章 Verilog HDL基本概念》由会员分享,可在线阅读,更多相关《PPT课件----西电出版社《Verilog HDL数字设计教程》 第2章 Verilog HDL基本概念(65页珍藏版)》请在金锄头文库上搜索。

1、第2章 Verilog HDL基本概念,2.1编写并运行一个简单的Verilog HDL语言程序 2.2 层次建模 2.3 Verilog HDL语言的数据类型及常量和变量 2.4 编译预处理 2.5 小结,2.1编写、运行一个简单的Verilog HDL语言程序,1. 编写一个简单的Verilog HDL语言程序 2. Verilog HDL语言程序开发环境QuartusII6.0,编写一个简单的Verilog HDL语言程序,【例2-1】实现一个二选一多路选择器 module mux21a(a,b,s,y); input a,b,s; output y; assign y = s ? b

2、: a; /实现二选一功能 endmodule,或: module mux21a(input a,b,s,output y); assign y = s ? b : a; /实现二选一功能 endmodule,例2-1说明,(1) module和endmodule是Verilog HDL语言的关键字,用来说明模块。Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间。 (2)input和output 是Verilog HDL语言的关键字,用来说明模块的端口属性。端口属性有三种,为input、output和inout,分别为输入、输出、输入

3、输出属性。每个模块要进行端口列表声明,说明这些端口的输入、输出属性。 (3)assign是Verilog HDL语言的关键字,用来说明模块内部信号的连接关系。语句assign y = s ? b : a;的功能是:当s=1时,y=b;当s=0时,y=a。,Verilog HDL语言程序开发环境 QuartusII设计流程,1创建工程准备工作,图2-2 选择编辑文件及其语言类型,QuartusII设计流程,1创建工程准备工作,图2-3键入源程序并存盘,QuartusII设计流程,2. 创建工程,图2-4 选择创建新工程,QuartusII设计流程,2.创建工程,图2-5 工程位置、工程名称、顶层

4、模块名,QuartusII设计流程,2.创建工程,图2-6 将所有相关的文件都加入进此工程,QuartusII设计流程,2.创建工程,图2-7 选择目标FPGA器件,QuartusII设计流程,2.创建工程,图2-8 选择第三方工具,QuartusII设计流程,2.创建工程,图2-9 使用modelsim作为仿真工作的设置,QuartusII设计流程,2.创建工程,图2-10 工程层次界面和设计文件界面,QuartusII设计流程,3编译设置,图2-11 设置对话框,QuartusII设计流程,3编译设置,图2-12 Device设置对话框,QuartusII设计流程,3编译设置,图2-13

5、选择配置器件的工作方式,QuartusII设计流程,3编译设置,图2-14 选择配置器件和编程方式,QuartusII设计流程,3编译设置,图2-15 未用管脚设置,QuartusII设计流程,3编译设置,图2-16 编译进度,QuartusII设计流程,3编译设置,图2-17 全程编译后出现报错信息,QuartusII设计流程,3编译设置,图2-18 全程编译成功后的汇总信息,4仿真,图2-19 选择Vector waveform file界面,QuartusII设计流程,4仿真,图2-20 仿真测试向量波形文件,QuartusII设计流程,4仿真,图2-21 仿真波形信号设置,Quartu

6、sII设计流程,4仿真,图2-22 加入了待观察信号的波形图,QuartusII设计流程,4仿真,QuartusII设计流程,图2-23 设置仿真时间最小间隔,4仿真,QuartusII设计流程,图2-24 设置仿真时间长度,4仿真,QuartusII设计流程,图2-25 设置好的激励波形图,4仿真,QuartusII设计流程,图2-26 功能仿真设置界面,4仿真,QuartusII设计流程,图2-27 功能仿真波形输出,4仿真,QuartusII设计流程,图2-28 时序仿真设置界面,4仿真,QuartusII设计流程,图2-29 时序仿真波形输出,5引脚锁定,QuartusII设计流程,图

7、2-30 引脚锁定对话框图,6把程序下载到硬件上进行测试,QuartusII设计流程,图2-31 设置USB硬件端口,6把程序下载到硬件上进行测试,QuartusII设计流程,图2-32 下载界面,6把程序下载到硬件上进行测试,QuartusII设计流程,图2-33 选择下载文件,2.2 层次建模,图2-34 全加器f_adder电路图,2.2 层次建模,【例2-3】实现一个1位全加器 /*以下为全加器顶层模块*/ module f_adder(ain,bin,cin,cout,sum); output cout,sum; input ain,bin,cin; wire ain,bin,cin

8、,cout,sum; wire d,e,f; h_adder u0(ain,bin,d,e); h_adder u1(e,cin,f,sum); or2a u2(d,f,cout); endmodule,2.2 层次建模,【例2-3】实现一个1位全加器 /*以下为半加器模块*/ module h_adder(a,b,co,so); output co,so; input a,b; wire a,b,co,so,bbar; and and2(co,a,b); not not1(bbar,b); xnor xnor2(so,a,bbar); endmodule /*以下为或门模块*/ module

9、 or2a(a,b,c); output c; input a,b; wire a,b,c; assign c=a | b; endmodule,图2-35 半加器h_adder电路图,2.2 层次建模,图2-36 一位全加器功能仿真波形,2.2 层次建模,图2-37 自顶向下设计方法,2.2 层次建模,图2-38 自底向上设计方法,2.2 层次建模,图2-41 全加器的设计层次,模块实例化与端口关联,在模块实例化中,可以使用两种方法将模块定义的端口与外部环境中的信号连接起来:位置关联法和名称关联法。 (1)位置关联 h_adder u0(ain,bin,d,e); h_adder u1(e,

10、cin,f,sum); or2a u2(d,f,cout); (2)名称关联 h_adder u0(.a(ain),.b(bin),.co(d),.so(e); /替换h_adder u0(ain,bin,d,e); h_adder u1(.a(e),.b(cin),.co(f),.so(sum); /替换h_adder u1(e,cin,f,sum); or2a u2(.a(d),.b(f),.c(cout); /替换or2a u2(d,f,cout);,2.3 Verilog HDL语言的数据类型及常量和变量,1.变量及其数据类型 2.常量及其数据类型,变量及其数据类型,表2-1 四值逻辑

11、,Wire类型,wire型信号的格式如下: wire n-1:0 数据名1,数据名2,数据名i; /共有i条总线,每条总线内有n条线路 或 wire n:1 数据名1,数据名2,数据名i; 例: wire a; /定义了一个1位的wire型数据 wire 7:0 b; /定义了一个8位的wire型数据 wire 4:1 c, d; /定义了二个4位的wire型数据,register类型,reg型数据的格式如下: reg n-1:0 数据名1,数据名2, 数据名i; 或 reg n:1 数据名1,数据名2, 数据名i; 例: reg rega; /定义了一个1位的名为rega的reg型数据 re

12、g 3:0 regb; /定义了一个4位的名为regb的reg型数据 reg 4:1 regc, regd; /定义了两个4位的名为regc和regd的reg型数据,register类型,【例2-4】二选一数据选择器示例 module mux21a(a,b,s,y); input wire a,b,s; output reg y; always (a,b,s) if(s=1) y=b; else y=a; endmodule,integer类型,整数是一种通用的寄存器数据类型,用于对数据进行操作,使用关键字integer进行声明。 整数的默认位宽为32位。 通常,声明为reg类型的寄存器变量为

13、无符号数,而整数类型的寄存器变量则为有符号数,向量类型,向量通过MSB : LSB进行说明,方括号中左边的数总是代表向量的最高有效位。 例如:wire0:31 addr; reg7:0 data; 定义了向量addr和data,则向量addr的最高有效为它的第0位,向量data的最高有效为它的第7位。,一个使用多种数据类型的程序片断,【例2-5】一个使用多种数据类型的程序片断 integer M; reg3:0A; reg7:0B; initial begin M=-1; /M为32位整数,采用补码形式存放,补码形式为32个1 A=M; /A为4位无符号数,截取M的低4位赋给A:1111 B=

14、A; /B为8位无符号数,将A零扩展后送给B:00001111 B=A+14 /B为29:11101 A=A+14; /A+14为29,截取低4位送给A:1101 end,memory类型,Verilog HDL通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器、ROM型存储器、寄存器文件。 数组中的每一个单元通过一个数组索引进行寻址。 在Verilog中没有多维数组存在。,memory类型,【例2-6】存储器建模 module rom(clk,rst,rd,data,addr); input clk,rst,rd; /rd读使能信号 input2:0 addr; /建立的存储器

15、有8个地址空间 output reg7:0 data; /数据是8位的 reg7:0 memory0:7; /8 x 8位数据的存储器 always (posedge clk,posedge rst) if(rst) begin: init /该顺序块用于初始化ROM值 memory0 = 8b0000_0001; memory1 = 8b0000_0010; memory2 = 8b0000_0100; memory3 = 8b0000_1000; memory4 = 8b0001_0000; memory5 = 8b0010_0000; memory6 = 8b0100_0000; memory7 = 8b1000_0000; end else begin: read /该顺序块用于读取ROM值 if(rd) data=memoryaddr; end endmodule,常量及其数据类型,数字声明 在Verilog HDL中,整型常量即整常数有以下四种进制表示形式:二进制整数(b或B)、十进制整数(d或D)、十六进制整数(h或H)和八进制整数(o或O)。 数字表达

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号