明德扬吴老师 发表于 2020-4-22 10:08:03

【每日一题】下面脉冲练习题,请写出其功能代码。

【每日一题】

   同学们,上午好。

   为了提高大家学习能动性与专业技术水平,我将会不定时在群里进行不同主题提问,这就要你们活动活动脑子啦,日积月累达到能力提升哟~

   今日题目:下面练习题,请写出其功能代码。

    dout初值为1,当收到en=1时,dout产生宽度为5的低电平脉冲;当收到en2=1时,dout产生宽度为7的低电平脉冲。如下图:

   

希望同学们积极踊跃参与答题哦~~~

明德扬吴老师 发表于 2020-4-23 16:11:05

同学们,晚上好,我来公布答案啦!

至简设计参考代码:
always @(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
      cnt <= 0;
    end
    else if(add_cnt)begin
      if(end_cnt)
            cnt <= 0;
      else
            cnt <= cnt + 1;
    end
end

assign add_cnt = dout==0;      
assign end_cnt = add_cnt && cnt== x-1;

always@(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
      flag_sel <= 0;
    end
    else if(en1)begin
      flag_sel <= 1;
    end
    else if(en2)begin
      flag_sel <= 0;
    end
end


always@(posedge clk or negedge rst_n)begin
    if(rst_n==1'b0)begin
      dout <= 1;
    end
    else if(en1 || en2)begin
      dout <= 0;
    end
    else if(end_cnt)begin
      dout <= 1;
    end
end


always@(*)begin
    if(flag_sel==0)
      x = 5;
    else
      x = 7;
end

lixin 发表于 2020-4-23 17:37:16



该问题,可以参考下面链接:
至简设计法问题【汇总贴】
http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=950&fromuid=100782
(出处: 明德扬论坛)
在分别三,【问题2】 有解释。
页: [1]
查看完整版本: 【每日一题】下面脉冲练习题,请写出其功能代码。