verilog hdl 综合实用教程

verilog hdl 综合实用教程

ID:12420175

大小:87.00 KB

页数:3页

时间:2018-07-17

verilog hdl 综合实用教程_第1页
verilog hdl 综合实用教程_第2页
verilog hdl 综合实用教程_第3页
资源描述:

《verilog hdl 综合实用教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《VerilogHDL综合实用教程》读书笔记——锁存器、触发器 2007-08-2900:23加入收藏·转发分享人人网开心网新浪微博搜狐博客百度收藏谷歌收藏qq书签豆瓣淘江湖FacebookTwitterDiggYahoo!Bookmarks锁存器:  推导出锁存器的一般规则是,如果变量未在always语句所有可能的执行过程中被赋值,就推导出锁存器。如果变量在if的所有分支中都被赋值则综合成组合逻辑。  case、casez、casex可转成if、else形式。当case中不是所有情况都列举出或使用default语

2、句时、在case语句前对case中赋值对象赋初值也可避免综合出锁存器。若不是以上各种情况且须综合成组合逻辑可以使用综合命令,如下:例:always@(Toggle)      case(Toggle)                //synthesisfull_case         2'b01:NextToggle=2'b10;          2'b10:NextToggle=2'b01;      endcase   endmodule上例中的//synthesisfull_case是综合命令,告知综合

3、工具case中已是全部列举可能的情况,这样综合后无锁存器。(正常的case语句是有优先级的,先出现的优先级最高,若case中各分支是互斥时,综合成译码逻辑。当使用casex时用综合命令//synthesisparallel-case告知综合工具该casex是互斥的)。触发器:  沿控制的用触发器,且沿控制的赋值用非阻塞的方式“Zee<=A;”。  当always中是沿敏感时,此always中有if……elseif……且在这些if……elseif中有多于1个对同一变量赋值时,这个变量很可能被综合成有异步置位或清零的触

4、发器。例:always@(negedgeResetornegedgeSetornegedgeCLKA)       if(!Reset)          NextState<=12;       elseif(!Set)          NextState<=5;       else          NextState<=CurrentState;上例为异步赋值,最后一个else才是时钟控制,前两个不受时钟控制,综合时形成带异步清零或置位。(书中说“不提倡使用异步赋值”)使其同步化的方法是将always中的

5、敏感变量表中只有时钟作为触发源则为同步,既always中的处理都是在时钟的控制下进行的。触发器、锁存器优化:例:   always@(posedgeclockA)          case(PreserState)             0:begin                  PresetState<=1;                  Zont<=4'b0100;               end             1:begin                  PresetState

6、<=0;                   Zont<=4'b0001;               end          endcaseZont的赋值在clockA的上升沿触发的always语句块中,所以Zont就被综合成四位触发器,太浪费资源,改为如下:      always@(posedgeclockA)           case(PresetState)              0:PresetState<=1;              1:PresetState<=0;          

7、  endcase       always@(PresetState)           case(PresetState)              0:Zont=4'b0100;              1:Zont=4'b0001;            endcase又例:     always@(ProbeorCount)               if(Probe)                  Luck=Count;综合后因Probe为0时Luck保留原值,所以综合成锁存器。若要去掉锁存器

8、可以改为       always@(ProbeorCount)        if(Probe)           Luck=Count;         else           Luck=0;     或       always@(ProbeorCount)      begin         Luck=0;         if(Probe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。