版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章VerilogHDL基本概念2.1编写并运行一个简单的VerilogHDL语言程序2.2层次建模2.3VerilogHDL语言的数据类型及常量和变量
2.4编译预处理2.5小结2.1编写、运行一个简单的VerilogHDL语言程序1.编写一个简单的VerilogHDL语言程序
2.VerilogHDL语言程序开发环境—QuartusII6.0
编写一个简单的VerilogHDL语言程序【例2-1】实现一个二选一多路选择器modulemux21a(a,b,s,y);inputa,b,s;outputy;assigny=s?b:a;//实现二选一功能endmodule或:modulemux21a(inputa,b,s,outputy);assigny=s?b:a;//实现二选一功能endmodule例2-1说明(1)module和endmodule是VerilogHDL语言的关键字,用来说明模块。VerilogHDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间。(2)input和output是VerilogHDL语言的关键字,用来说明模块的端口属性。端口属性有三种,为input、output和inout,分别为输入、输出、输入输出属性。每个模块要进行端口列表声明,说明这些端口的输入、输出属性。(3)assign是VerilogHDL语言的关键字,用来说明模块内部信号的连接关系。语句assigny=s?b:a;的功能是:当s=1时,y=b;当s=0时,y=a。
VerilogHDL语言程序开发环境
—QuartusII设计流程1.创建工程准备工作图2-2
选择编辑文件及其语言类型QuartusII设计流程1.创建工程准备工作图2-3键入源程序并存盘QuartusII设计流程2.创建工程图2-4
选择创建新工程QuartusII设计流程2.创建工程图2-5工程位置、工程名称、顶层模块名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-12Device设置对话框QuartusII设计流程3.编译设置图2-13
选择配置器件的工作方式
QuartusII设计流程3.编译设置图2-14
选择配置器件和编程方式
QuartusII设计流程3.编译设置图2-15
未用管脚设置QuartusII设计流程3.编译设置图2-16
编译进度QuartusII设计流程3.编译设置图2-17
全程编译后出现报错信息QuartusII设计流程3.编译设置图2-18
全程编译成功后的汇总信息4.仿真图2-19
选择Vectorwaveformfile界面QuartusII设计流程4.仿真图2-20仿真测试向量波形文件QuartusII设计流程4.仿真图2-21
仿真波形信号设置QuartusII设计流程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设计流程图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位全加器//*以下为全加器顶层模块*/modulef_adder(ain,bin,cin,cout,sum);outputcout,sum;inputain,bin,cin;wireain,bin,cin,cout,sum;wired,e,f;h_adderu0(ain,bin,d,e);h_adderu1(e,cin,f,sum);or2au2(d,f,cout);endmodule2.2层次建模
【例2-3】实现一个1位全加器/*以下为半加器模块*/moduleh_adder(a,b,co,so);outputco,so;inputa,b;wirea,b,co,so,bbar;andand2(co,a,b);notnot1(bbar,b);xnorxnor2(so,a,bbar);endmodule/*以下为或门模块*/moduleor2a(a,b,c);outputc;inputa,b;wirea,b,c;assignc=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_adderu0(ain,bin,d,e);
h_adderu1(e,cin,f,sum);
or2au2(d,f,cout);(2)名称关联
h_adderu0(.a(ain),.b(bin),.co(d),.so(e));
//替换h_adderu0(ain,bin,d,e);
h_adderu1(.a(e),.b(cin),.co(f),.so(sum));
//替换h_adderu1(e,cin,f,sum);
or2au2(.a(d),.b(f),.c(cout));
//替换or2au2(d,f,cout);2.3VerilogHDL语言的数据类型及常量和变量
1.变量及其数据类型
2.常量及其数据类型
变量及其数据类型
表2-1四值逻辑逻辑值硬件电路中的条件0逻辑0,条件为假1逻辑1,条件为真x逻辑值不确定z高阻,浮动状态Wire类型wire型信号的格式如下:wire[n-1:0]数据名1,数据名2,…数据名i;//共有i条总线,每条总线内有n条线路 或
wire[n:1]数据名1,数据名2,…数据名i; 例:wirea;//定义了一个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;
例:regrega;//定义了一个1位的名为rega的reg型数据reg[3:0]regb;//定义了一个4位的名为regb的reg型数据reg[4:1]regc,regd;//定义了两个4位的名为regc和regd的reg型数据register类型【例2-4】二选一数据选择器示例modulemux21a(a,b,s,y);inputwirea,b,s;outputregy;always@(a,b,s) if(s==1)y=b; elsey=a;endmoduleinteger类型整数是一种通用的寄存器数据类型,用于对数据进行操作,使用关键字integer进行声明。整数的默认位宽为32位。通常,声明为reg类型的寄存器变量为无符号数,而整数类型的寄存器变量则为有符号数
向量类型
向量通过[MSB:LSB]进行说明,方括号中左边的数总是代表向量的最高有效位。例如:wire[0:31]addr;reg[7:0]data;定义了向量addr和data,则向量addr的最高有效为它的第0位,向量data的最高有效为它的第7位。一个使用多种数据类型的程序片断【例2-5】一个使用多种数据类型的程序片断integer
M;reg[3:0]A;reg[7:0]B;initialbeginM=-1;//M为32位整数,采用补码形式存放,补码形式为32个1A=M;//A为4位无符号数,截取M的低4位赋给A:1111B=A;//B为8位无符号数,将A零扩展后送给B:00001111B=A+14//B为29:11101A=A+14;//A+14为29,截取低4位送给A:1101end
memory类型VerilogHDL通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器、ROM型存储器、寄存器文件。数组中的每一个单元通过一个数组索引进行寻址。在Verilog中没有多维数组存在。memory类型【例2-6】存储器建模modulerom(clk,rst,rd,data,addr);inputclk,rst,rd;//rd读使能信号input[2:0]addr;//建立的存储器有8个地址空间outputreg[7:0]data;//数据是8位的reg[7:0]memory[0:7];//8x8位数据的存储器always@(posedgeclk,posedgerst) if(rst) begin:init//该顺序块用于初始化ROM值
memory[0]=8’b0000_0001; memory[1]=8’b0000_0010; memory[2]=8’b0000_0100; memory[3]=8’b0000_1000; memory[4]=8’b0001_0000; memory[5]=8’b0010_0000; memory[6]=8’b0100_0000; memory[7]=8’b1000_0000; endelse begin:read//该顺序块用于读取ROM值
if(rd)data=memory[addr]; endendmodule常量及其数据类型
数字声明在VerilogHDL中,整型常量即整常数有以下四种进制表示形式:二进制整数(b或B)、十进制整数(d或D)、十六进制整数(h或H)和八进制整数(o或O)。数字表达方式有以下三种:①<位宽><进制><数字>,这是一种全面的描述方式。②<进制><数字>,在这种描述方式中,数字的位宽采用缺省位宽(这由具体的机器系统决定,但至少为32位)。③<数字>,在这种描述方式中,进制缺省为十进制。常量及其数据类型
x和z值在数字电路中,x代表不定值,z代表高阻值。一个x可以用来定义十六进制数的四位二进制数的状态,八进制数的三位,二进制数的一位。z的表示方式同x类似。z还有一种表达方式是可以写作“?”。
常量及其数据类型
负数一个数字可以被定义为负数,只需在位宽表达式前加一个减号,减号必须写在数字定义表达式的最前面。注意减号不可以放在位宽和进制之间,也不可以放在进制和具体的数之间。见下例:-8'd4 //这个表达式代表4的补数(用八位二进制数表示)8'd-4 //非法格式
常量及其数据类型
下划线下划线可以用来分隔开数的表达,以提高程序可读性。但不可以用在位宽和进制处,只能用在具体的数字之间。见下例:16'b1010_1011_1111_1010 //合法格式8'b_0011_1010
//非法格式当常量不说明位数时,默认值是32位。例:10=32’d10=32’b10101=32’d1=32’b1-1=-32’d1=32’hFFFFFFFF‘BX=32’BX=32’HXXXXXXXX常量及其数据类型
参数(parameter)型在VerilogHDL中用parameter来定义常量,即用parameter定义一个标识符来代表一个常量,称为符号常量,即标识符形式的常量,采用标识符代表一个常量可提高程序的可读性和可维护性。parameter型数据是一种常数型的数据,其说明格式如下:parameter 参数名1=表达式,参数名2=表达式,…,参数名n=表达式;设计参数型N位加法器【例2-7】设计参数型N位加法器moduleadd_N(X,Y,sum,co);parameterN=4;input[N-1:0]X,Y;output[N-1:0]sum;outputco;assign{co,sum}=X+Y;endmodule//16位加法器只需要调用参数型N位加法器即可moduleadd_16(X,Y,s,c);input[15:0]X,Y;output[15:0]s;outputc;add_N#(16)add16(X,Y,s,c);endmodule//8位加法器只需要调用参数型N位加法器即可moduleadd_8(X,Y,s,c);input[7:0]X,Y;output[7:0]s;outputc;add_Nadd8(X,Y,s,c);defparamadd8.N=8;endmodule2.4编译预处理
1.宏定义`define
2.“文件包含”处理`include
宏定义应用举例【例2-8】宏定义应用举例`defineM3+2modulemacro_ex(x,y);input[3:0]x;output[5:0]y;assigny=`M*x;endmodule文件包含示例【例2-9】文件包含示例文件one
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 版回迁房购房合同
- 灰砂砖代理购销协议
- 别墅品质专业保证
- 瓷砖质量保证书承诺
- 房屋租赁合同补充协议纠纷处理
- 借款保证书的书写
- 工作失责反省书模板
- 经济印刷服务合同
- 电信服务合同仲裁程序说明
- 艺人签约经纪人合约
- MOOC 葡萄酒文化与鉴赏-西北工业大学 中国大学慕课答案
- MOOC 民事诉讼法学-西南政法大学 中国大学慕课答案
- (正式版)SHT 3045-2024 石油化工管式炉热效率设计计算方法
- (2024年)保安培训图文课件
- 《数字图像处理》题库1(选择题、填空题、判断题)试题+答案
- 智能网联车路云协同系统架构与关键技术研究综述
- 2023流域超标准洪水防御预案编制导则
- 高等数学(高职教育)全套教学课件
- 瑞幸咖啡品牌营销策略研究报告
- 统编版语文八年级下册全册大单元整体教学设计表格式教案
- 蒙牛学生奶培训课件
评论
0/150
提交评论