hhwsss 2023-01-13 20:52 采纳率: 33.3%
浏览 21
已结题

hdlbits网站上一个问题

hdlbits中的一个题目

img

module top_module (

input clk,
input d,
output q
);
wire clk1,sw;
always@(posedge clk)begin
clk1<=clk;
end
always@(posedge clk)begin

    sw<=clk1&(~clk);  
        sw<=clk1&(~clk); //找到下降沿
end
always@(posedge clk or posedge sw)begin//下降沿的上升沿就是clk的下降沿,但是会差一个周期
   
    
    q<=d;
end 



    

endmodule

运行结果

img


错误
Critical Warning (10237): Verilog HDL warning at top_module.v(18): can't infer register for assignment in edge-triggered always construct because the clock isn't obvious. Generated combinational logic instead File: /home/h/work/hdlbits.8931483/top_module.v Line: 18
这是一种隐晦的说法:你把你的触发器编码错了。Verilog需要以逻辑频率合成器可以理解的风格进行编码,特别是在复位和使能信号时。常见原因包括在敏感度列表中指定异步重置(看起来像两个时钟),但在 if-then-else 结构中不以这种方式运行,或者尝试将看起来根本不像重置和启用的典型编码样式的代码组合在一起。
Warning (15610): No output dependent on input pin "clk" File: /home/h/work/hdlbits.8931483/top_module.v Line: 2
此警告表示这些输入引脚未被任何东西使用(或不影响电路的行为)。如果这种情况发生在您知道不应该忽略的输入上,则可能表示存在错误。

先找到一个下降沿的波形,然后用它的上升沿作为原来时钟下降沿,再用always去赋值,但是不能出现预期结果。

  • 写回答

2条回答 默认 最新

  • 老皮芽子 2023-01-14 08:28
    关注

    这是双边沿触发器

    
    //双边沿触发器
    module dual_edge_module
    (
        input    clk,
        input    d,
        output    q
    );
    reg    q1,q2;
    always @(posedge clk)
    begin
        q1 <= d;
    end
    
    always @(negedge clk)
    begin
        q2 <= d;
    end
    assign q = clk ? q1:q2;
    endmodule
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月22日
  • 已采纳回答 1月14日
  • 创建了问题 1月13日

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器