VerriogHDL学习笔记.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下面是一个简单的Verliog HDL的例子。 module reg12(d, clk,,q); define size 11 input [size:0] d; input clk; output [size:0] q; reg [size:0] q; always@(posedge clk) q=d; endmodule Verilog HDL的基本设计单元是“模块(block)”。一个模块由两部分组成:一部分描述接口,一部分描述逻辑功能,即定义输入是如何影响输出的。 每个程序包括四个主要部分:端口定义、I/O说明、信号类型和功能描述。 有3中方法可以在模块中描述逻辑。 用assign语句 assign A=BC; assign语句一般适合于对组合逻辑进行赋值。称为连续赋值方式。 2、用原件例化 or myor3(a,b,c,d); 这个语句定义了一个3输入的“或”门 3、用always块语句 always@(posedge clk) q=d 上句表示每当时钟上升沿到来时执行一遍块内的语句。 4、assign # 2 B = A; 表示 B信号在2个时间单位后得到A信号的值。 常用的赋值语句:连续赋值语句和过程赋值语句 连续赋值语句:assign,用于对wire型变量赋值。 过程赋值语句:用于对寄存器型变量赋值,有以下2种赋值方式。 非阻塞赋值方式,=, 该方式在块结束时才完成赋值操作。 阻塞赋值方式,=, 在该语句结束是就完成赋值操作。 综合是将电路的高级语言转化为低级的,可与FPGA\CPLD或构成ASIC的门阵列基本结构相映射的网表文件或程序。综合包括编译,转换,调度,分配,控制器综合和结果的生成等几个步骤。 RTL代码在下载到板子上这个过程之前,要做一个综合、布局、布线,按照FPGA的要求,综合成电路,然后讲bit流文件下到FPGA开发板上,一句话,下板子之前,肯定得综合,只是这部分你做的很快(可能电路比较小,综合很快)。你要下载,肯定得生成可以下载到板子里的一种文件,比如bit流等,肯定就包含综合这个步骤,只是很快,你看看你软件界面上,有没有synthesize这个选项(肯定有),还有布局步线(map等)。 基本的数据类型和常量、变量、信号 1、常量:程序运行过程中值不变的量。 完整的数字表达式为:位宽’进制数字 位宽是对应二进制数字的宽度 变量 分为两种:网络型和寄存器型 nets型变量:输出始终根据输入的变化而更新其值的变量。一般指的是硬件电路中的各种物理连接。 类型 功能说明 Wire tri 连线类型 Wor trior 具有线或特性的连线 Wand triand 具有线或特性的连线 Tri1 tri0 分别为上拉电阻和上拉电阻 Supply1、supply0 分别为电源“1”和地“0” register型变量:对应的是具有状态保持作用的电路元件,如触发器,寄存器等。它与nets型变量的根本区别在于:它需要明确赋值,并且在被重新赋值前一直保持原值。设计中必须将寄存器变量放在过程块语句(如initial、always)中,通过过程赋值语句赋值。 数组:若干个宽度相同的向量,reg型数组变量即为memory型变量,可定义存储器型数据。如:reg[7:0] a[255:0]; 定义了一个256个字节,每个字节宽度为8位的存储器。 数据类型 整数(INTEGER)、实数(REAL)、位(BIT)、位矢量(BIT_VECTOR)、标准逻辑(STD_LOGIC_VECTOR)、布尔量(BOOLEAN)、字符(CHARACTER)、字符串(STRING)及时间(TIME)类型。 典型电路的设计: 简单的组合逻辑设计 例:可综合的数据比较器,功能是比较数据a和数据b,相同给出结果1,否则给0。 //--------compare.v------ module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; endmodule 2、简单时序逻辑电路的设计 例:1/2分频器的可综合模型.通常使用always块和@(posedge clk)或(negedge clk)的结构来表述时序逻辑。 //half_clk.v: module half_clk(reset,clk_in,clk_out); input clk_in,reset; output clk_out; reg clk_out; always@(posedge clk_in) begin if(!reset)clk_out=0; else clk_out=-clk_out; end endmodule 在always块

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档