verilog教程--------关键路径的选取!, 我的编程经历!
这是一篇我的心得,写verilog的心得,啊,对于学习verilog设计FPGA的同学一定会有帮助的啊!
本人就例子来教大家怎样提取关键路径:
先解释一下什么叫关键路径
所谓关键路径就是,在电路中频繁调用,而且延迟过长,
或者产生意外的几率比较大的线路。
1:组合电路中的关键路径提取:
q=a&b&c|d&e&b;
这个很简单了,估计大家都会的,因为b的传输要两级,
可以简单的提取b作为一级的:
q=(a&c|d&e)&b
2: always——block中的关键路径提取:
always中关键路径的提取一般用分步法提取,请看下面一个
always——block,
always@(in)
begin
if(!a)
if(c&&(!b&&e))
out=out1;
else out=out2;
else if(b&&e) out =out1;
end
这里面e是关键路径,我们可以分两个步骤提取关键路径
(1) 当e=1的时候有:
if(!a)
if(c&&(!b))
out=out1;
else out=out2;
(2)当e=0的时候有:
if(!a) out=out2;
因此这个always可以写成这个样子:
always@(in)
begin
if(e)
if(!a)
if(c&&(!b))
out=
这是一篇我的心得,写verilog的心得,啊,对于学习verilog设计FPGA的同学一定会有帮助的啊!
本人就例子来教大家怎样提取关键路径:
先解释一下什么叫关键路径
所谓关键路径就是,在电路中频繁调用,而且延迟过长,
或者产生意外的几率比较大的线路。
1:组合电路中的关键路径提取:
q=a&b&c|d&e&b;
这个很简单了,估计大家都会的,因为b的传输要两级,
可以简单的提取b作为一级的:
q=(a&c|d&e)&b
2: always——block中的关键路径提取:
always中关键路径的提取一般用分步法提取,请看下面一个
always——block,
always@(in)
begin
if(!a)
if(c&&(!b&&e))
out=out1;
else out=out2;
else if(b&&e) out =out1;
end
这里面e是关键路径,我们可以分两个步骤提取关键路径
(1) 当e=1的时候有:
if(!a)
if(c&&(!b))
out=out1;
else out=out2;
(2)当e=0的时候有:
if(!a) out=out2;
因此这个always可以写成这个样子:
always@(in)
begin
if(e)
if(!a)
if(c&&(!b))
out=
