当前位置: 首页 > news >正文

网业设计与制作搜索引擎优化概述

网业设计与制作,搜索引擎优化概述,红色ppt模板免费下载,dwcs3做网站相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 作为一个硬件描述语言,Verilog HDL常常需要使用语句描述并行执行的电路,但其实在仿真器的底层,这些并行执行的语句是有先后顺序…

相关阅读

Verilog基础icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12263729.html?spm=1001.2014.3001.5482


        作为一个硬件描述语言,Verilog HDL常常需要使用语句描述并行执行的电路,但其实在仿真器的底层,这些并行执行的语句是有先后顺序的,然而Verilog标准并没有将这些事件调度的顺序定死,而是给予了仿真器厂商一定的自由去实现自己的产品,这就导致了设计者如果不遵循一定的编程习惯,会导致意想不到的仿真结果,下面是一些相关的规则。

2、在创建分频时钟时,使用阻塞赋值

        在描述一个对时钟沿敏感的时序逻辑时,普遍的建议是使用非阻塞赋值去描述寄存器操作。但这不是绝对的,当这个寄存器操作的对象是生成时钟时,如果使用了非阻塞赋值,就有可能造成仿真出现错误,下面就是一个时钟竞争的例子。

`timescale 1ns/1ns
module test();
reg clk, clk_1, rst_n;
reg a, b, c;
initial begin //一个周期为10的时钟clk = 0;forever #5 clk = !clk;
end//第一个always块
always@(posedge clk, negedge rst_n) begin //一个分频时钟,周期为20if(!rst_n) beginclk_1 <= 1'b0;endelse beginclk_1 <= !clk_1;end
end//第二个always块
always@(posedge clk, negedge rst_n) begin //第一个寄存器使用原时钟触发if(!rst_n) beginb <= 1'b0;endelse beginb <= a;end
end//第三个always块
always@(posedge clk_1, negedge rst_n) begin //第二个寄存器使用分频时钟触发if(!rst_n) beginc <= 1'b0;endelse beginc <= b;end
endinitial beginrst_n = 0;#3 rst_n = 1;
endinitial begina  = 1;#24 a = 0;
end
endmodule

        上面是一个很简单的例子,即两个寄存器对输入打两拍,不过第一个寄存器使用10ns的周期,第二个寄存器使用20ns的周期。竞争会出现在两个时钟的上升沿重合时,此时可能的事件调度过程分析如下。

  1. initial块中的clk取反后为高电平,触发第一个always块和第二个always块。如Verilog基础:时序调度中的竞争(一)所说,这两个块的执行顺序是不定的。
  2. 若第一个always块中的非阻塞赋值首先执行,第二个always块中的非阻塞赋值之后执行,则首先clk_1取反后为高电平,在此之后,是执行被clk_1上升沿触发的第三个always块还是执行第二个always块中的非阻塞赋值是不确定的。若先执行第二个always块后再执行第三个always块,则c会直接得到a的值,而不会有任何等待。若先执行第三个always块后执行第二个always块,则是正常打拍。
  3. 若第二个always块中的非阻塞赋值首先执行,第一个always块中的非阻塞赋值之后执行,则c必定会直接得到a的值,而不会有任何等待,因为在b得到a的值时,clk_1还没有取反,也就无法触发第三个always块了。

        因为在25ns时,两个时钟的上升沿重合,所以在24ns时我们将a拉低,测试波形如图1所示。

图1 一个有竞争的波形图

        可以看到在a=0后的下一个上升沿,b和c同时被拉低,这就是竞争所导致的结果。解决这个问题也很简单,只需要将第一个always块中的非阻塞赋值改为阻塞赋值即可,如下所示。

always@(posedge clk, negedge rst_n) begin //一个分频时钟,周期为20if(!rst_n) beginclk_1 = 1'b0;endelse beginclk_1 = !clk_1;end
end

         这样做有什么用?这样能保证在第二个always块的非阻塞赋值真正完成前(非阻塞赋值分为两步,第一步为右值计算,第二步为真正完成),第三个always块已被触发。下面是修改后没有竞争的波形。

 

 

http://www.zhongyajixie.com/news/63260.html

相关文章:

  • 做优化排名会不会影响网站速度网站seo推广排名
  • 十大网页游戏排行百度搜索网站优化
  • 本地的番禺网站建设星链seo管理
  • 静态网站更新文章麻烦网站关键词优化软件效果
  • 黄冈推广平台网站优化关键词价格
  • 做网站技术方法有怎样推广公司的网站
  • 泰安市违法建设网站最经典的营销案例
  • 智慧团建手机上不可以转团吗培训班线上优化
  • 保定网站制作排名需要多少钱百度搜索关键词技巧
  • 郑州网站建设金麦建站管理课程培训
  • 做ui的网站百度经验手机版
  • 青岛网站建设工作室关键词搜索优化外包
  • 株洲市做公司官方网站快速推广
  • 大型网站制作费用表百度网盘网站入口
  • i网站制作百度快速收录教程
  • 企业网站类型有哪些现在最火的推广平台有哪些
  • 网站建设宽度一般都是多少钱seo入门版
  • 淄赌博做网站百度手机助手应用商店
  • 网站建设项目价格广告推广精准引流
  • 建立网站 域名 服务器吗什么软件可以推广
  • 阿里云服务器做网站今日的最新新闻
  • 门户网站底部北京seo公司华网白帽
  • 网站开发前期准备seo优化排名经验
  • 网站优化建设上海网站源码
  • 北京网站制作收费标准北京seo执行
  • 龙泉公路建设投资有限公司网站微商软文大全
  • 宁夏交通厅建设局网站下载班级优化大师并安装
  • 美橙网站建设最好的推广平台是什么软件
  • 网站 做 app开发工具自己做网站网页归档
  • 自己用wordpress建站论坛平台