这个如何用Verilog转述??急!


求求各位高手帮忙一下!
下面这个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)

    stop是std_logic还是std_logic_vector?
    我怎么觉得你多打了一个小于号,是不是条件应该写成这样:
    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)

    小程序可以搜索一个叫xhdl的东东玩一玩
  • yachong001 (2008-10-24 13:12:18)

    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
  • jekky888888 (2008-10-24 21:33:34)

    楼上的正解啊!!!
  • dll729 (2008-10-24 21:37:41)

    kankan zenmeyang
  • dollargate (2008-10-24 22:39:10)

    QUOTE:

    原帖由 yachong001 于 2008-10-24 13:12 发表
    always@(posedge CLK or negedge reset) begin
            if( stop==1'b0 || reset == 1'b0 ) begin
                    clr  
    貌似else if
    下的语句不用加begin end吧?
  • glisten0317 (2008-10-25 15:48:28)

    我个人觉得楼上的好像有些问题吧,VHDL程序中,要把CLK,reset和stop都作为敏感信号,那在@中应该把CLK,reset和stop都放进去吧,是不是应该是这样的:
    [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)

    用verilog的task会不会更准确点 (我不懂VHDL  是看的楼主的描述)
    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)

    谢谢楼上,你的处理很不错,我验证一下!