Verilog关键字汇总整编.docxVIP

  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文档。上传文档
查看更多
* * * * l.verilog 特点: 区分大小写,所有关键字都要求小写 不是强类型语言,不同类型数据之间可以赋值和运算 //是单行注释可以跨行注释 描述风格有系统级描述、行为级描述、 RTL级描述、门级描述,其中 RTL级和门级别与具体 电路结构有关,行为级描述要遵守可综合原则, 门级描述使用门级模型或者用户自定义模型 UDP来代替具体基本元件,在 IDE中针对不同FPGA器件已经有对应的基本元件原语 2.verilog 语法要点: module endmodule之间由两部分构成:接口描述和逻辑功能描述 IO 端口种类:in put output in out 相同位宽的输入输出信号可以一起声明, in put[3:0] a,b; 不同位宽的必须分开写 内部信号为reg类型,内部信号信号的状态: 0 1 x z , 3bx仁3bxx1 x/z 会往左扩展 3b1=3b001 数字不往左扩展 逻辑功能描述中常用 assign描述组合逻辑电路,always既可以描述组合逻辑电路又可以描 述时序逻辑电路,还可以用元件调用方法描述逻辑功能 always之间、assign之间、实例引用之间以及它们之间都是并行执行, always内部是顺序 执行 常量格式:+/-二进制位宽 进制 该进制的数值: 默认进制为10进制 默认位宽为32位 位宽是从二进制宽度角度而言的 由位宽决定从低位截取二进制数 2hFF=2b11,通常由被赋值的reg变量位宽决定 parameter常用于定义延迟和变量位宽,可用常量或常量表达式定义 变量种类: wire reg memory IO信号默认为wire类型,除非指定为reg类型 wire可以用作任何输入输出端口 wire 包括 in put output inout wire不带寄存功能 assign赋值语句中,被赋值的信号都是 wire类型 assig n之所以称为连续赋值,是因为不断检测表达式的变化 reg类型可以被赋值后再使用,而不是向 wire 一样只能输出,类似 VHDL中的buffer端口 reg类型变量初始值为 x (VHDL中初始值为本类型最小值,通常是 0) always模块里被赋值的信号都必须定义为 reg类型,因为always可以反复执行,而reg表 示信号的寄存,可以保留上次执行的值 算术运算中如果有X值则结果为X for循环中的变量另外定义成 integer,因为它不是实际信号,有正负; reg则以无符号数 =右边各变量的值是上一次时钟边沿时,这些变量当时的值 用于描述可综合的时序电路 =语句结束之后过程 always才可能结束 在always过程中,begin end块内按先后顺序立即赋值,在 fork join 内同时赋值(可能造 成冲突) 与assign连用描述组合电路 begin end中阻塞的含义:begin ...@(A ) B=C...; end 如果A事件不发生则永远不能执行 下去,被阻塞了 由于时钟的延时(往往在ps级),多个always(posedge)之间究竟谁先执行是个未知数 使用原则:同一个 always过程块内建立时序电路用 = 纯组合逻辑电路用=,生成的电路结构最简单,执行速度最快 同一个always块内不要混用 =和= 不要在多个always块内对同一个变量赋值(多源驱动) if else 的三种形式,第三种形式适合描述优先编码器 if条件中0/x/z当成假,1当成真,非0的数值也当成真 块被命名后,其内部变量可以被调用,因为变量都是静态的 (调用信号:对应电路中的一个 信号线被引到另一处) initial 块只无条件执行一次 always块在满足条件时不断执行 initial 常用来写测试文件,always块常用来写电路描述 always既可以描述组合逻辑电路又可以描述时序逻辑电路 always如果后面有敏感信号列表则不能用 wait语句 always既可以描述电平触发又可以描述边沿触发, wait只能描述电平触发 assig n常用于描述组合逻辑电路 测试文件中一般都是先 initial 后always 生成语句:生成快的本质是使用循环内的一条语句代替多条重复的 verilog 语句,简化了用 户的编程 genvar用于声明生成变量,生成变量只能用在生成快之间 仿真时,仿真器会将生成块中的代码展平,在确立后的方针代码中,生成变量是不存在的 最好是先想象出来循环生成语句被展平后的电路样子,再写相关的描述语句 task 和 function 的区别: task可以定义自己的仿真时间单位, function 与主模块共用同一个仿真时间单位 函数不能启动任务,任务能够启动函数 函数至少要有一个输入变量,任务没有输入变量 函数返回一个值,任务不返回

文档评论(0)

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

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

1亿VIP精品文档

相关文档