Verilog编程经历.doc

Verilog编程经历.doc

ID:48049249

大小:32.00 KB

页数:6页

时间:2020-01-21

Verilog编程经历.doc_第1页
Verilog编程经历.doc_第2页
Verilog编程经历.doc_第3页
Verilog编程经历.doc_第4页
Verilog编程经历.doc_第5页
资源描述:

《Verilog编程经历.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、verilog教程--------关键路径的选取!,我的编程经历!这是一篇我的心得,写verilog的心得,啊,对于学习verilog设计FPGA的同学一定会有帮助的啊!  本人就例子来教大家怎样提取关键路径:  先解释一下什么叫关键路径  所谓关键路径就是,在电路中频繁调用,而且延迟过长,  或者产生意外的几率比较大的线路。  1:组合电路中的关键路径提取:  q=a&b&c

2、d&e&b;  这个很简单了,估计大家都会的,因为b的传输要两级,  可以简单的提取b作为一级的:  q=(a&c

3、d&e)&b  2:always——block中的关键

4、路径提取:  always中关键路径的提取一般用分步法提取,请看下面一个  always——block,    always@(in)  begin  if(!a)  if(c&&(!b&&e))  out=out1;  elseout=out2;  elseif(b&&e)out=out1;  end  这里面e是关键路径,我们可以分两个步骤提取关键路径  (1)当e=1的时候有:  if(!a)  if(c&&(!b))  out=out1;  elseout=out2;  (2)当e=0的时候有:  if(!a)out=out2;  因此这

5、个always可以写成这个样子:    always@(in)  begin  if(e)  if(!a)  if(c&&(!b))  out=out1;  elseout=out2;  elseif(!a)out=out2;  end    这是中间形式,还要写成最终形式:  定义两个临时变量,为了在综合时候,被综合掉,要定义他们  为输出端口(output)——切记!!!    outputout_temp1,out_temp2;  out_temp1=a?out:(c&&(!b))?out1:out2;  out_temp2=a?out:o

6、ut2;    assignout=e?out_temp1:out_temp2;    好了,这个已经提取成功!~  再来看第三个例子,在应用中经常用到的啊  3。FSM中的关键路径的提取:关于状态机,这是FPGA设计必备的基础,编码方式有很多中比如:one——hot,orone--cool  还有就是组合电路和时序电路的写法,这里主要讲关键路径的提取至于状态机的写法,还是查阅一下资料啊!   FSM中关键路径的提取方法一般是先将要提取的关键路径去掉  然后将原来FSM中的next-state用另外一个符号代替,作为次FSM的输入,即有主从两个F

7、SM。    来看一下这个简单的状态机啊:  parameters0=0;  parameters1=1;  parameters2=2;  parameters3=3;    inputin1,in2,in3,set;  reg[1:0]nextstate,currentstate;    always@(in1orin2orin3orcurrentstate)  begin  nextstate=s0;//startstate  case(currentstate)  s0:if(in1&&!set)  nextstate=s1;  else

8、if(set)nextstate=s2;  s1:if(in2&&set)  nextstate=s3;  elseif(!set)nextstate=s2;  s2:if(set)nexstate=s3;  s3:if(in3)nextstate=s0;  default:nextstate=s0;  endcase  end    好,现在来看第一步,将状态机中的关键路径去掉,这里的关键路径为set,试想如果状态从s0一路到s3,都是set在起作用,如果有一个不小心的毛刺产生,就会执行错误的行为,所以这里的set为关键路径。    提取后的状

9、态机如下:  reg[1:0]temp;  always@(in1orin2orin3orcurrentstate)  begin  nextstate=s0;//startstate  temp=s0;  case(currentstate)  s0:if(in1)  temp=s1;    s1:if(in2)  temp=s3;    s2:temp=temp;  s3:if(in3)temp=s0;  default:temp=s0;  endcase  end      第二步:  always2(temporcurrentstateo

10、rset)  begin  case(currentstate)  s0:if(!set)  nextstate=temp  elsen

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

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

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