kungfudaibi / digit_logic_SXU

作为山西大学人工智能数字逻辑实验的开源网站
MIT License
2 stars 0 forks source link

#lab2无法解决数码管显示一个小数点的问题 #1

Open kungfudaibi opened 3 months ago

kungfudaibi commented 2 months ago

问题剖析

ppt代码中的bintobcd模块直接使用有问题

    always@(posedge clk, posedge rst)
    if(rst) begin
        one=0;
        ten=0;
        hun=0;
        shift_reg=0;
        count=0;
        end
这段代码表示的意思是当clk(时钟信号)或者rst(重置信号)变化的时候执行后面的语句,当rst高电平有效的时候(也就是rst置为1)执行后面的所有的代码,但是在代码的其它部分中,rst_n是低电平有效 在时序逻辑中,posedge和negedge分别描述时钟的上升沿和下降沿 posedge negedge
当时钟信号从低电平变为高电平时,posedge会被触发 当时钟信号由高电平变为低电平时,negedge触发

当这个模块被直接使用时,如果你的重置开关(reset)对应的映射的键位表示高电平,计数器对会计数,但是转换bcd会一直执行reset之后的部分,也就是执行重置,个位,十位,百位对应的值都是0

解决方法

将rst置为低电平有效

   if(!rst) begin
        one=0;
        ten=0;
        hun=0;
        shift_reg=0;
        count=0;
        end
kungfudaibi commented 2 months ago

scan_seg_display模块也有这个问题,可以把reset部分删掉,或者更改为低电平有效(随你upcounter模块的设置)