[基础知识]Verilog100个值得注意的地方.docxVIP

[基础知识]Verilog100个值得注意的地方.docx

  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文档。上传文档
查看更多
[基础知识]Verilog100个值得注意的地方

1.FPGA不是编程语言,而是一种可综合的硬件描述语言。2.Verilog 支持两种进程initial和always进程3.阻塞与非阻塞指的相对于进程本身而言的。4.使用进程模块的电路类型:组合电路-----对组合逻辑中使用的所有输入敏感例子: always@(a or b or sel)时序电路-----仅对时钟和控制信号敏感例子: always @(posedgeclk or negedgeclr)5.可以用case语句完成多路选择器的功能。6.verilog中有两类子程序:函数和任务函数-----根据输入返回一个值 -----产生组合逻辑 -----用在表达式中:assignmult_out=mult(ina,inb); -----函数是组合逻辑,不能含有任何延时,事件,或者时序控制声明,至少有一个输入变量总是返回一个变量 -----可以调用函数,但是不能调用任务。任务-----可以是组合或者寄存器 -----以声明的形式调用任务:stm_out(nxt,first,sel,filter); -----与其他编程语言中的任务相似 -----与函数不同任务不需要传递参数,而函数要传递参数 -----可以调用任务和函数。 ----- 可以含有任何延时,事件,或者时序控制声明 -----返回零个或者多个数值7.可综合的verilog语法子集是指用硬件可以实现的语法。力求用最简单的语言实现最复杂的硬件电路。8.硬件都有相应的输入输出的接口,或者是输入或者是输出,或者是输入输出。9.reg型是指组合逻辑里面的一个寄存数据的,wire是组合逻辑里面的一条连线。10. define定义了一个参数,在整个工程里面都是有效地。parameter定义的一个参数只在这个文件里面进行适用的。11.各种逻辑操作符,移位操作符,算术操作符大多是课综合的。12.assign 一般是只针对于组合逻辑,而always语句既可以用于组合逻辑又可以用于时序逻辑,always模块的敏感表,如果是电平,则为组合逻辑如果是沿信号posedge或者negedge则为时序逻辑。13.begin-------end和C语言里面的{}是类似的。14.for 语句 -----循环因为综合出来的结果可能比较浪费资源所以就一般用的比较少,但是在一些特定的设计中可以起到事半功倍的效果。15.total logic element总共消耗的逻辑单元。16. 行为级仿真可以理解为功能仿真(前仿真);布局布线后仿真可以理解为时序仿真(后仿真)17.第一个写的非常好的代码如下:注意其中clk_div_r和cnt为什么被定义成reg型的,并且对应的含义是什么moduleclkdiv(clk,rst_n,clk_div );inputclk; //50MHzinput rst_n; //低电平复位信号output clk_div; //分频信号,连接到蜂鸣器//---------------------------------------------------reg[19:0] cnt; //分频计数器always @ (posedgeclk or negedgerst_n) //异步复位if(!rst_n) cnt = 20d0; else cnt = cnt+1b1; //寄存器cnt 20ms循环计数//----------------------------------------------------regclk_div_r; //clk_div信号值寄存器always @ (posedgeclk or negedgerst_n) if(!rst_n) clk_div_r = 1b0; else if(cnt == 20hfffff) clk_div_r = ~clk_div_r;

文档评论(0)

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

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

1亿VIP精品文档

相关文档