verilogHDL语言复习归纳.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
verilogHDL语言复习归纳

verilog HDL语言复习归纳?? 2010-11-10 17:39:46|??分类:?FPGA|字号?订阅 1、用module endmodule定义一个模块;module后跟模块名称 后跟端口列表 如module myaddr a,b,c ; 2、端口类型包括输入input、?输出output、 输入输出inout。 3、变量可以定义为wire和reg型,变量要放在begin...end內,则该变量就需要使用reg,在begin...end之外,则使用wire; 4、在定义变量的时候使用的格式是: 变量定义: ? size、wide 其中要注意的是第二个位置的地方,必须定义线宽,否则会出现意想不到的错误。在端口类型定义和在变量类型定义的时候都要加上线宽。 wire 为线形变量 reg 为寄存器型变量 5、逻辑功能描述的三种方法 用assign描述逻辑功能,always描述、创建实例来描述。 assign用来描述直接建立输出和输入信号的某种联系;如assign a b|c;? assign a bc;?? assign a b+c;?? assign a b*c; always用来描述一些比较复杂的组合逻辑及时序逻辑? 后面跟上@? 表示在什么情况下触发执行,类似于触发器。*标识敏感列表(所有输入信号有变化的时候都触发)。 触发可以是电平触发,也可以是上升沿或者是下降沿触发,分别跟posedge??? negedge,如always @ posedge clk0 or negedge clk1 assign和always语句都是并发执行的,需要顺序执行则要加上begin?? end,如 timescale 100ns/100ns ...................... begin #1 a b; #1 b c; end 执行顺序是先过100ns执行a b,再经过100ns执行b c。 而fork?? join里的程序也是并发执行的,要求执行与上相同的效果则 timescale 100ns/100ns ...................... fork #1 a b; #2 b c; join 6、initial中的语句也是跟assign和always一样是并发执行的,不同的是initial中的语句只执行一次。 7、程序编写使用//? /**/? 注释。 8、数的表示方法 ? 数的类型有二进制、八进制、十进制、十六进制和高阻态z、不确定态x,如4b1010、4o12、4d10、4ha,表示较长数据的时候可以用_将数字进行分割,在编译的时候会将它忽略。 9、标识符不能操作1024个字符,标识符第一个数字不能为数字。数据类型可以归纳为三种:线网型wire、寄存器型reg、参数性parameter。在always块内被赋值的变量必须是寄存器型的。 10、赋值种类分:连续赋值和过程赋值,过程赋值又分为阻塞赋值和非阻塞赋值。 连续赋值是assign使用线网类型赋值,而过程赋值是使用always、initial寄存器类型进行赋值。阻塞赋值使用 号?而非阻塞赋值使用 号。 为避免使用阻塞和非阻塞赋值产生的错误需要使用一下方法: a、在使用always块描述组合逻辑时(电平敏感),使用阻塞赋值;时序逻辑时使用非阻塞赋值(边沿敏感); b、不在同一个always语句中同时使用阻塞和非阻塞进行赋值。 c、不在不同的always语句中为同一个变量进行赋值。 11、条件结构使用if else;使用时应注意将else中的内容填充完整,否则会出现不定态; 12、case语句使用时序将default加上,与C语言中不同的是,在每种情况后面都不加break语句,这种情况完成后就会退出。 ?13、循环语句使用for,退出某个begin end语句可以使用disable语句,如 begin:sssssss for(i 0;i 4;i++) begin if i 2 disable sssssss; end end 就会跳出ssssss所在的begin? end块。 14、任务和函数,任务和函数的不同是 a、任务可以用单独语句的方式调用,不带返回值,但是可以有任意多个输入和输出参数,可以包含符号#或者事件控制符号@,还可以调用其他任务和函数; b、函数则以表达式的方式调用、比如在赋值语句中调用,至少有一个输入参数,不能有输出参数,带一个返回值,不包含#@,不能调用任务,但是可以调用函数。 15、预编译指令? 使用define 结构如:?? define? 标识符(宏名)字符串(宏内容)。作用使用时从宏定义开始到程序执行结束。 16、文件包含使用include 为避免重复包含,使用ifdef?? else?? endif?? 如 ifdef

文档评论(0)

kabudou + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档