|
之前老师教的是VHDL语言,现在在自学verilolg,但在改写之前写的电子钟程序时卡壳了
程序段如下:
process(switch,correct,clock)
begin
if correct='1' and clock='1' then --正常模式下,counter等于零
counter<=0;
elsif switch'event and switch='1' then --修改或闹钟模式下,每来一个脉冲,counter加1
if correct='0' or clock='0' then
if counter=6 then
counter<=0;
else
counter<=counter+1;
end if;
end if;
end if;
end process;
switch为拨码开关,counter值对应相应的数码管,用于修改相应的时间位,例如小时的十位
改为如下的Verilog程序:
always @ (posedge switch)
begin
if (correct && clock) //--正常模式下,counter等于零
counter<=0;
else //--修改或闹钟模式下,每来一个脉冲,counter加1
if (counter==6)
counter<=0;
else
counter<=counter+1'b1;
end
这样写当我进入时间修改或闹钟模式时,第一次counter是从0开始,但下一次则不一定从0开始,现在我想把correct和clock都加入事件列表,当修改和设置时间后回到正常模式时counter值要重置为0,但一直无法解决。希望大家帮帮忙
另外,我想请教大家:Verilog中如何在高频率时钟下检测信号的上升沿,就像上面的程序中我在1khz的时钟下检测switch的上升沿,switch为拨码开关控制 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|