作者Uruzu (...)
看板Electronics
標題Re: [問題] veriog撰寫問題
時間Thu Aug 6 00:19:33 2009
沿用之前的code
補個rising pulse
是否是你要的?
module add_sub(clk,reset,mod_n,incr,decr);
input clk,incr,decr,reset;
output [12:0] mod_n;
reg [12:0] mod_n;
reg incr_d, incr_2d;
reg decr_d, decr_2d;
wire incr_r = incr_d & ~incr_2d;
wire decr_r = decr_d & ~decr_2d;
always@(posedge clk)
begin
if(reset)
mod_n <= 13'd2000;
else
mod_n <= incr_r ? mod_n-13'd10 :
decr_r ? mod_n+13'd10 : mod_n;
end
always@(posedge clk)
begin
if(reset)
incr_d <= 1'b0;
incr_2d <= 1'b0;
decr_d <= 1'b0;
decr_2d <= 1'b0;
else begin
incr_d <= incr;
incr_2d <= incr_d;
decr_d <= decr;
decr_2d <= decr_d;
end
end
endmodule
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.81.57
1F:推 arclitetank:我猜應該就是這樣~ 08/06 00:23
2F:推 felghana:這樣會不會有race的問題阿 因為incr_r變high時 是在clk 08/06 00:38
3F:→ felghana:正緣觸發 那到底是上面的always先做還是下面呢? 08/06 00:39
4F:→ felghana:要下面的先把incr_r先變high才會對 08/06 00:39