
这个如何用Verilog转述??急!
字体: 小 中 大 | 打印 发表于: 2008-10-23 20:38 作者: 飞扬紫百合 来源: EDA中国门户网站
求求各位高手帮忙一下!
下面这个process如何用Verilog表述出来???
先谢谢你们了!
Process(CLK,stop,reset)
begin
if(stop<='0' or reset='0') then
clr<='0';
elsif(CLK'event and CLK='1') then
clr<='1';
end if;
end process; ---程序1
4楼yachong001同学是这样写的:
always@(posedge CLK or negedge reset) begin
if( stop==1'b0 || reset == 1'b0 ) begin
clr <= 1'b0 ;
end else begin
clr <= 1'b1 ;
end
end ---程序2
但是个人认为:
程序1,不考虑时钟,当stop<='0' or reset='0'时,clr<='0';接下来就是,在stop和reset都不为0的情况下,clk上升沿来临时,clr<='1'。
对于程序2,在“clk的上升沿来临时”或者“reset的下降沿来临时”,当stop==1'b0 || reset == 1'b0 时,clr <= 1'b0 ;在stop和reset都不为0的情况下,clr <= 1'b1 。
我当初也是按着“程序2”来转述的,可是后来一分析,发现程序2中的描述同程序还是有些区别。
因为我是刚刚接触VHDL,只是我个人的理解,敬请大家批评指正!
[ 本帖最后由 飞扬紫百合 于 2008-10-29 22:43 编辑 ]


最新回复
salaspaul (2008-10-23 22:09:12)
我怎么觉得你多打了一个小于号,是不是条件应该写成这样:
if(stop='0' or reset='0') then
?
always@(posedge clk or negedge reset)
begin
if((!stop)||(!reset))
clr <= 0;
else
clr <= 1;
end
yadog (2008-10-23 23:07:30)
yachong001 (2008-10-24 13:12:18)
if( stop==1'b0 || reset == 1'b0 ) begin
clr <= 1'b0 ;
end else begin
clr <= 1'b1 ;
end
end
jekky888888 (2008-10-24 21:33:34)
dll729 (2008-10-24 21:37:41)
dollargate (2008-10-24 22:39:10)
QUOTE:
貌似else if下的语句不用加begin end吧?
glisten0317 (2008-10-25 15:48:28)
[email=always@(posedge]always@(posedge[/email] CLK or negedge reset or negedge stop)
begin
if( (!stop) || (!reset) )
clr <= 0 ;
else
clr <= 1 ;
end
Elvis1228 (2008-10-26 10:23:38)
飞扬紫百合 (2008-10-29 22:44:27)
dio65759465 (2008-11-03 16:11:00)
task config1;
input clk;
input stop;
input reset;
reg clr;
begin
if( stop==1'b0 || reset == 1'b0 ) begin
clr <= 1'b0 ;
@(posedge clk);
if (stop ==1 && reset ==1)
clr <= 1;
end
endtask
[ 本帖最后由 dio65759465 于 2008-11-3 16:58 编辑 ]
飞扬紫百合 (2008-11-04 15:06:32)