在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 798|回复: 1

[求助] hdlbits答题,有没有大佬帮我看看注释与注释前三行有什么区别呀?

[复制链接]
发表于 2023-9-19 16:22:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
有没有大佬帮我看看注释与注释前三行有什么区别呀?在HDLbits答题,发现自己写的代码跑出的波形不对。
   题目:构建一个100位的左右旋转器,同步load,左右旋转需使能。旋转器从另一端输入移位的位元,不像移位器那样丢弃移位的位元而以零位移位。如果启用,旋转器就会旋转这些位,而不会修改或丢弃它们。

load:加载100位的移位寄存器数据
ena[1:0]:2’b01 右转1bit; 2’b10 左转1bit;其他情况不转
q:旋转器内容

module top_module(
    input clk,
    input load,
    input [1:0] ena,
    input [99:0] data,
    output reg [99:0] q);
    reg temp;
    always@(posedge clk)begin
        if(load==1)begin
            q<=data;
        end
        else if(ena==2'b01)begin
            temp<=q[0];
            q<=q>>1'b1;
            q[99]<=temp;
            //q<={q[0],q[99:1]};别人的代码
        end
        else if(ena==2'b10)begin
            temp<=q[99];
            q<=q<<1'b1;
            q[0]<=temp;
            //q<={q[98:0],q[99]};
        end
       else begin
            q<=q;
        end
    end

endmodule


                               
登录/注册后可看大图

                               
登录/注册后可看大图


发表于 2023-12-5 18:04:48 | 显示全部楼层
            temp<=q[0];
            q<=q>>1'b1;
            q[99]<=temp;
            //q<={q[0],q[99:1]};别人的代码

你的代码中,因为verilog的代码执行是并行的,temp<=q[0]; q[99]<=temp; 会同时执行,所以q[0]的值会在下一个clk上升沿传递给q[99],本次clk上升沿传递的是上个clk上个升沿获取的值。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-21 21:31 , Processed in 0.019292 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表