数字电路CPLD实验_Verilog HDL语言的熟悉.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字电路CPLD实验_Verilog HDL语言的熟悉

实验一 Verilog HDL语言的熟悉 实验目的 (1)熟悉使用Quartus II 7.2开发环境。 (2)熟悉基本的Verilog HDL语法及编程。 实验环境 (1)每2位同学为1组,每组一台PC机、一台DP-MCU/Altera实验仪。 (2)配套的软硬件设备:并口JTAG下载线、Quartus II 7.2安装程序等。 实验内容 一、学习以下例程: module muxtwo(out, a, b, s1); input a, b, s1; output out; reg out; always @ (s1 or a or b) if( !s1 ) out = a; else out = b; endmodule 以上程序段完成了二选一数据选择器,从以上例程扩展学习Verilog HDL语言的基本语法。 二、Verilog HDL语言基本语法的学习: (1)数据常量 -- Verilog HDL中共有19种数据类型。 1 数字 整数 二进制数(b或B) 十进制数(d或D) 十六进制数(h或H) 八进制数(o或O) 数字的三种表达方式: 位宽进制数字 --- 全面的描述方式 进制数字 --- 默认位宽,至少32位 数字--- 默认位宽与进制(十进制) examples: 88ha2 x 与 z -- x代表不定值;z(?)代表高阻值 examples: 4b10x0 4b101z 12dz 12d? 8h4x 负数 -- 在位宽表达式前加一个减号(-),减号必须放在数字定义表达式的最前面。 examples: -8d5 //ok 8d-5 //not ok!!! 下划线 -- 用来分割数字的表达,提高程序的可读性,只能用在具体的数字之间。 examples: 16b1010_1111_1001_0001 //OK 8b_1001_1111 // not ok!!! note:常量不说明位数的时候,默认为32位,每个字母用8位的ASCII码值表示 2 参数型(parameter) -- 用parameter来定义常量,称为符号常量,可提高程序的可读性与可维护性。 格式: parameter 参数名1 = 表达式,参数名2 = 表达式,... ,参数名n = 表达式; note:表达式必须是常数表达式!! 举例: parameter msb = 7; parameter byte_size=8,byte_msb=byte_size-1; note:parameter所定义的常量必须是值可以确定的。 (2)变量类型 1. wire型 - 常用来表示用于以assign关键字指定的组合逻辑信号 - 默认的类型 wire a; // 1个1位 wire[7:0] b; //1个8位 wire[4:1] c,d; //2个4位 2. reg型 -- 存储数据单元的抽象 -- always块内被赋值的每一个信号都必须为reg型(reg只表示被定义的信号将用在alway块内) -- 默认初始值为不定值:x reg rega; reg[3:0] regb; reg[4:1] regc,regd; 3. memory型 -- 通过对reg型变量建立数组,用于对存储器建模 reg[7:0] mega[255:0]; -- mega存储器,有256个8bit单元,地址范围为0~255 思考:reg[n-1:0] rega; 与 reg mega[n-1:0]的区别?? (3)结构说明语句 verilog HDL语言中的任何过程模块都从属于以下4种结构的说明语句: - initial //开始时立即执行,且只执行一次 - always //开始时立即执行,直到仿真介绍 - task - function //task和function语句可以在程序模块中的一处或多处调用 (3.1)always语句 - 仿真过程中不断活跃着 - 其后的过程快是否执行取决于它的触发条件是否满足 声明格式 always 时序控制 语句 note: always语句需要时序控制配合,否则会出现仿真死锁。 例1 always areg = ~areg; //零延迟的无限循环跳变 例2 always #10 areg = ~areg; //周期为20的无限延续信号 例3 reg[7:0] counter; ret tick; always @ (posedge areg) //上升沿激励 begin tick = ~tic

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档