verilog学习日志.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文档。上传文档
查看更多
verilog学习日志

解决xilinx的仿真库的编辑问题 模块的做法和调用方法,带参数模块的应用:两种方法modelname # (value)madelcase();二、用defparam 改变参数。 Begin ……end之间是串行执行的语句。在实际的电路中各条语句并不是完全串行的。 Fork……join之间是并行执行的语句,但是不可综合; 表征过程模块的四种工程模块:initial模块,always模块,task模块,function模块;一个程序中可以有多个initial模块和always模块,但是initial模块只执行一次,不可综合,而always模块是不断重复执行的,可以综合。 数据类型两大类:线网类型和寄存器类型 线网类型:结构化原件之间的物理连接,默认值高阻z;寄存器表示数据的存储单元,默认值为x;寄存器类型数据保持最后一次赋值,而线型数据需要持续的驱动; 线网数据场用来以关键字assign指定组合逻辑信号。模块中输入输出默认为wire类型,可综合的线网类型有wire,tri,supply0,supply1;线网类型的变量赋值只能通过assign来完成,不能用于always语句。 寄存器类型的数据没有强弱之分,且所有的寄存器类型变量都必须明确给出类型说明(无默认状态)。 If语句指定了一个有限编码逻辑,case结果是并行的,没有优先级,if……else占用面积小但速度较慢,case语句占用面积大,但速度较快。 如果if……else语句块为单句则直接写就可以,如果不只一句则要用begin……end括起来。 循环语句for,while,repeat可以综合,forever不可综合。 对于reg型数据不能用assign赋值。 拼接数据时最好将数据的进制形式都写详细,否则仿真出错,不知为何?例如:parameter a = 8;b = {{a{1’b0}},c}; module mult_8b_for( a,b,q ); parameter bsize = 8; input [bsize - 1:0] a,b; output [2 * bsize-1:0] q; reg [2 * bsize-1:0] q, a_t; reg [bsize - 1:0] b_t; reg [bsize - 1:0] cnt; always @(a or b) begin q = 0;//一定要使用阻塞赋值 a_t = {{bsize{1b0}},a}; b_t = b; for (cnt = bsize;cnt 0;cnt = cnt - 1) begin if(b_t[0]) begin q = q + a_t;//一定要使用阻塞赋值 end else begin q = q;//一定要使用阻塞赋值 end a_t = a_t 1;//一定要使用阻塞赋值 b_t = b_t 1;//一定要使用阻塞赋值 end end Endmodule Always语句中使用非阻塞赋值“=”时,只有在always结束后才会把右端的赋值给左边的寄存器,如果采用非阻塞赋值,则会造成循环语句只执行一次。虽然模块整体是时序逻辑,但是循环部分却是组合逻辑。 Task和function是综合的,不过综合出来都是组合电路。 在第一行Task语句中不能列出端口名称。 Task中可以调用其他的任务或函数,也可以调用自身; 任务定义的结构体内部能出现always或initial过程块(可能是因为其只能综合成组合电路的缘故吧)。但是可以在always或initial中调用。调用时要与声明的端口顺序相同。且只能在过程块中调用。 任务的输出端口必须和寄存器类型的数据变量对应。 Function不允许有输出端口的声明,函数定义在函数内部会隐式的定义一个寄存器变量,该寄存器变量和函数同名并且位宽也一致。函数内部不能调用任务。 触摸板如何禁止:下载一个UltraNav驱动按上,到控制面板鼠标里面就可以禁止触摸板了。Win7下可以直接去禁止,不用安装驱动程序。 保证敏感信号列表的完备性。不要在组合逻辑中引入环路。 同步时序电路的准则:1、单时钟策略,单时钟沿策略。2、避免使用门控时钟。3、不要再子模块内部使用计数器分频产生所需时钟。推荐的方式是有一个专门的子模块来管理系统时钟。 同步电路在目前数字电路系统中占绝对优势,和异步电路相比有下列优势:对温度、电压、生产过程等外部参数的适应性强;可以消除毛刺和内部的歪斜的数据,能将设计频率提高的吉赫兹。但是需要更多的资源,而且其

文档评论(0)

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

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

1亿VIP精品文档

相关文档