欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Verilog-HDL数字设计教程--第2章-Verilog-HDL基本概念课件.ppt

    • 资源ID:82434750       资源大小:1.79MB        全文页数:66页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Verilog-HDL数字设计教程--第2章-Verilog-HDL基本概念课件.ppt

    第2章 Verilog HDL基本概念2.1编写并运行一个简单的Verilog HDL语言程序2.2 层次建模 2.3 Verilog HDL语言的数据类型及常量和变量 2.4 编译预处理 2.5 小结 在线教务辅导网:在线教务辅导网:http:/教材其余课件及动画素材请查阅在线教务辅导网教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:或者直接输入下面地址:http:/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: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)assign是Verilog HDL语言的关键字,用来说明模块内部信号的连接关系。语句assign y=s?b:a;的功能是:当s=1时,y=b;当s=0时,y=a。Verilog HDL语言程序开发环境语言程序开发环境 QuartusIIQuartusII设计流程设计流程 1 1创建工程准备工作创建工程准备工作 图图2-2-2 2 选择编辑选择编辑文件及其文件及其语语言言类类型型QuartusIIQuartusII设计流程设计流程 1 1创建工程准备工作创建工程准备工作 图图2-2-3 3键键入源程序并存入源程序并存盘盘QuartusIIQuartusII设计流程设计流程2.2.创建工程创建工程 图图2-4 选择创选择创建新工程建新工程QuartusIIQuartusII设计流程设计流程2.2.创建工程创建工程 图图2-5 2-5 工程位置、工程名称、工程位置、工程名称、顶层顶层模模块块名名QuartusIIQuartusII设计流程设计流程2.2.创建工程创建工程 图图2-62-6 将所有相关的文件都加入将所有相关的文件都加入进进此工程此工程 QuartusIIQuartusII设计流程设计流程2.2.创建工程创建工程图图2-72-7 选择选择目目标标FPGAFPGA器件器件QuartusIIQuartusII设计流程设计流程2.2.创建工程创建工程图图2-82-8 选择选择第三方工具第三方工具QuartusIIQuartusII设计流程设计流程2.2.创建工程创建工程图图2-9 2-9 使用使用modelsimmodelsim作作为为仿真工作的仿真工作的设设置置 QuartusIIQuartusII设计流程设计流程2.2.创建工程创建工程图图2-102-10 工程工程层层次界面和次界面和设计设计文件界面文件界面QuartusIIQuartusII设计流程设计流程3 3编译设置编译设置 图图2-112-11 设设置置对话对话框框QuartusIIQuartusII设计流程设计流程3 3编译设置编译设置 图图2-12 2-12 DeviceDevice设设置置对话对话框框QuartusIIQuartusII设计流程设计流程3 3编译设置编译设置 图图2-132-13 选择选择配置器件的工作方式配置器件的工作方式 QuartusIIQuartusII设计流程设计流程3 3编译设置编译设置 图图2 2-1414 选择选择配置器件和配置器件和编编程方式程方式 QuartusIIQuartusII设计流程设计流程3 3编译设置编译设置 图图2-152-15 未用管脚未用管脚设设置置QuartusIIQuartusII设计流程设计流程3 3编译设置编译设置 图图2-162-16 编译进编译进度度QuartusIIQuartusII设计流程设计流程3 3编译设置编译设置 图图2-172-17 全程全程编译编译后出后出现报错现报错信息信息QuartusIIQuartusII设计流程设计流程3 3编译设置编译设置 图图2-182-18 全程全程编译编译成功后的成功后的汇总汇总信息信息4 4仿真仿真 图图2-192-19 选择选择Vector waveform fileVector waveform file界面界面QuartusII设计流程设计流程4 4仿真仿真 图图2-20 2-20 仿真仿真测试测试向量波形文件向量波形文件QuartusII设计流程设计流程4 4仿真仿真 图图2-212-21 仿真波形信号仿真波形信号设设置置QuartusII设计流程设计流程4 4仿真仿真 图图2-22 2-22 加入了待加入了待观观察信号察信号的的波形波形图图QuartusII设计流程设计流程4 4仿真仿真 QuartusII设计流程设计流程图图2-23 2-23 设设置置仿真仿真时间时间最小最小间间隔隔4 4仿真仿真 QuartusII设计流程设计流程图图2-24 2-24 设设置置仿真仿真时间长时间长度度4 4仿真仿真 QuartusII设计流程设计流程图图2-252-25 设设置好的激励波形置好的激励波形图图4 4仿真仿真 QuartusII设计流程设计流程图图2-26 2-26 功能仿真功能仿真设设置界面置界面4 4仿真仿真 QuartusII设计流程设计流程图图2-272-27 功能仿真波形功能仿真波形输输出出 4 4仿真仿真 QuartusII设计流程设计流程图图2-28 2-28 时时序仿真序仿真设设置界面置界面4 4仿真仿真 QuartusII设计流程设计流程图图2-292-29 时时序仿真波形序仿真波形输输出出 5 5引脚锁定引脚锁定 QuartusII设计流程设计流程图图2-302-30 引脚引脚锁锁定定对话对话框框图图6 6把程序下载到硬件上进行测试把程序下载到硬件上进行测试 QuartusII设计流程设计流程图图2-32-31 1 设设置置USBUSB硬件端口硬件端口6 6把程序下载到硬件上进行测试把程序下载到硬件上进行测试 QuartusII设计流程设计流程图图2-32-32 2 下下载载界面界面6 6把程序下载到硬件上进行测试把程序下载到硬件上进行测试 QuartusII设计流程设计流程图图2-32-33 3 选择选择下下载载文件文件2.2 层次建模层次建模 图图2-32-34 4 全加器全加器f_adderf_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,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);endmodule2.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 or2a(a,b,c);output c;input a,b;wire a,b,c;assign c=a|b;endmodule 图图2-32-35 5 半加器半加器h_adderh_adder电电路路图图2.2 层次建模层次建模 图图2-36 2-36 一位全加器功能仿真波形一位全加器功能仿真波形2.2 层次建模层次建模 图图2-32-37 7 自自顶顶向下向下设计设计方法方法2.2 层次建模层次建模 图图2-32-38 8 自底向上自底向上设计设计方法方法2.2 层次建模层次建模 图图2-42-41 1 全加器的全加器的设计层设计层次次模块实例化与端口关联模块实例化与端口关联 在模块实例化中,可以使用两种方法将模块定义的端口与外部在模块实例化中,可以使用两种方法将模块定义的端口与外部环境中的信号连接起来:位置关联法和名称关联法环境中的信号连接起来:位置关联法和名称关联法。(1)(1)位置关位置关联联 h_adder u0(ain,bin,d,e);h_adder u1(e,cin,f,sum);or2a u2(d,f,cout);(2)(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 四值逻辑逻辑值硬件电路中的条件0逻辑0,条件为假1逻辑1,条件为真x逻辑值不确定z高阻,浮动状态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型数据reg 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;endmoduleinteger类型类型整数是一种通用的寄存器数据类型,用整数是一种通用的寄存器数据类型,用于对数据进行操作,使用关键字于对数据进行操作,使用关键字integer进行声明。进行声明。整数的默认位宽为整数的默认位宽为32位。位。通常,声明为通常,声明为reg类型的寄存器变量为无类型的寄存器变量为无符号数,而整数类型的寄存器变量则为符号数,而整数类型的寄存器变量则为有符号数有符号数 向量类型向量类型 向量通过向量通过MSB:LSB进行说明,方括进行说明,方括号中左边的数总是代表向量的最高有效号中左边的数总是代表向量的最高有效位。位。例如:例如:wire0:31 addr;reg7:0 data;定义了向量定义了向量addr和和data,则向量,则向量addr的的最高有效为它的第最高有效为它的第0位,向量位,向量data的最高的最高有效为它的第有效为它的第7位。位。一个使用多种数据类型的程序片断一个使用多种数据类型的程序片断【例例2-5】一个使用多种数据类型的程序片断一个使用多种数据类型的程序片断integer M;reg3:0A;reg7:0B;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类型类型 Verilog HDL通过对通过对reg型变量建立数型变量建立数组来对存储器建模,可以描述组来对存储器建模,可以描述RAM型存型存储器、储器、ROM型存储器、寄存器文件。型存储器、寄存器文件。数组中的每一个单元通过一个数组索引数组中的每一个单元通过一个数组索引进行寻址。进行寻址。在在Verilog中没有多维数组存在。中没有多维数组存在。memory类型类型 【例例2-6】存储器建模存储器建模module rom(clk,rst,rd,data,addr);input clk,rst,rd;/rd读使能信号读使能信号input2:0 addr;/建立的存储器有建立的存储器有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;endendmodule 常量及其常量及其数据类型数据类型 数字声明数字声明在Verilog HDL中,整型常量即整常数有以下四种进制表示形式:二进制整数(b或B)、十进制整数(d或D)、十六进制整数(h或H)和八进制整数(o或O)。数字表达方式有以下三种:,这是一种全面的描述方式。,在这种描述方式中,数字的位宽采用缺省位宽(这由具体的机器系统决定,但至少为32位)。,在这种描述方式中,进制缺省为十进制。常量及其常量及其数据类型数据类型 x和和z值值在数字电路中,x代表不定值,z代表高阻值。一个x可以用来定义十六进制数的四位二进制数的状态,八进制数的三位,二进制数的一位。z的表示方式同x类似。z还有一种表达方式是可以写作“?”。常量及其常量及其数据类型数据类型 负数负数一个数字可以被定义为负数,只需在位宽表达式前加一个减号,减号必须写在数字定义表达式的最前面。注意减号不可以放在位宽和进制之间,也不可以放在进制和具体的数之间。见下例:-8d4/这个表达式代表4的补数(用八位二进制数表示)8d-4/非法格式 常量及其常量及其数据类型数据类型 下划线下划线下划线可以用来分隔开数的表达,以提高程序可读性。但不可以用在位宽和进制处,只能用在具体的数字之间。见下例:16b1010_1011_1111_1010 /合法格式8b_0011_1010 /非法格式当常量不说明位数时,默认值是32位。例:1032d1032b10101=32d1=32b1-1=-32d1=32hFFFFFFFFBX=32BX=32HXXXXXXXX常量及其常量及其数据类型数据类型 参数参数(parameter)型型在Verilog HDL中用parameter来定义常量,即用parameter定义一个标识符来代表一个常量,称为符号常量,即标识符形式的常量,采用标识符代表一个常量可提高程序的可读性和可维护性。parameter型数据是一种常数型的数据,其说明格式如下:parameter参数名参数名1表达式,参数名表达式,参数名2表达式表达式,,参参数名数名n表达式表达式;设计参数型设计参数型N位加法器位加法器【例2-7】设计参数型N位加法器module add_N(X,Y,sum,co);parameter N=4;input N-1:0 X,Y;output N-1:0 sum;output co;assign co,sum =X+Y;endmodule/16位加法器只需要调用参数型N位加法器即可module add_16(X,Y,s,c);input 15:0 X,Y;output 15:0 s;output c;add_N#(16)add16(X,Y,s,c);endmodule/8位加法器只需要调用参数型N位加法器即可module add_8(X,Y,s,c);input 7:0 X,Y;output 7:0 s;output c;add_N add8(X,Y,s,c);defparam add8.N=8;endmodule2.4 编译预处理编译预处理 1.宏定义 define 2.“文件包含”处理include 宏定义应用举例宏定义应用举例【例2-8】宏定义应用举例define M 3+2module macro_ex(x,y);input3:0 x;output5:0 y;assign y=M*x;endmodule 文件包含示例文件包含示例【例2-9】文件包含示例文件one.vdefine aa a+bdefine cc c+aa文件 two.vinclude one.vmodule two(a,b,cout);input a,b,c;output out;assign out=cc;endmodule define aa a+bdefine cc c+aamodule two(a,b,cout);input a,b,c;output out;assign out=cc;endmodule2.5 小结小结在本章,我们讨论了以下知识点:Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间。每个模块实现特定的功能。详细讨论了数字电路设计中两种基本的设计方法:自底向上和自顶向下设计方法。模块实例化是实现自顶向下设计的一种重要途径。模块实例化是可以多层次的,一个调用了较低层次模块的模块,可以被更高层次的模块调用。在模块实例化中,可以使用两种方法将模块定义的端口与外部环境中的信号连接起来:位置关联法和名称关联法。数据类型是用来表示数字电路硬件中的数据储存和传送元素的,其中reg型、wire型、integer型、parameter型是几个最基本的数据类型。Verilog HDL语言中也有常量和变量之分,它们分别属于以上这些类型。通过使用参数,用户可以更加灵活地对模块进行说明。用户不但可以根据参数来定义模块,还可以方便地通过参数值重定义来改变模块的行为。编译预处理命令以符号“”开头,其有效作用范围为定义命令之后到本文件结束或到其它命令定义替代该命令之处。本章重点介绍了两种常用的预编译命令:define和include。P42 T1、2、3、4、5作业作业

    注意事项

    本文(Verilog-HDL数字设计教程--第2章-Verilog-HDL基本概念课件.ppt)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开