HDLBits Day17 s s_reg 延迟信号s_reg是 原信号的前一时刻值

在这里插入图片描述
问题点就是dfr的确定。第一感觉dfr是导函数,所以先定义一个延迟信号s_reg。
然后原题中是previous>current时,dfr <=1。
延迟信号s_reg是原信号的延迟,所以是在同一个clk下的s前一时刻值。所以求导的话应该是s - s_reg;而不是s_reg - s.
所以原题中意思=》 if (s_reg > s) dfr <= 1’b1;
故这一段应该是
always@(posedge clk) begin
if (reset) dfr <= 1’b1;
else if (s_reg > s)
dfr <= 1’b1;
else if (s_reg < s) dfr <= 1’b0;
end

module top_module (
    input clk,
    input reset,
    input [3:1] s,
    output fr3,
    output fr2,
    output fr1,
    output dfr
); 
    reg [3:1] s_reg;
    always@(posedge clk)
    if(reset)
    {fr3,fr2,fr1} <= 4'b1111;
    else case(s)
        3'b111 :   {fr3,fr2,fr1} <= 3'b000;
        3'b011 :   {fr3,fr2,fr1} <= 3'b001;
        3'b001 :   {fr3,fr2,fr1} <= 3'b011;
        default:   {fr3,fr2,fr1} <= 3'b111;
    endcase
    always@(posedge clk) begin
      if   (reset)
          s_reg <= 0;
    else s_reg <= s;
    end
   always@(posedge clk) begin
        if   (reset)  dfr <= 1'b1;
     else  if (s_reg > s)
       dfr <= 1'b1;
       else   if (s_reg < s) dfr <= 1'b0;
       
   end
    
    

endmodule
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值