Re: [問題] verilog reset問題
How about this?
======
reg reset_d,reset_2d;
wire reset_r;
always @(posedge i_clk or negedge i_rts) begin
if (!i_rts) cnt <= 0 ;
else if (!reset_r) cnt <= 0 ;
else cnt <= cnt + 1'b1 ;
end
always @(posedge i_clk or negedge i_rts) begin
if(!i_rts) {reset_2d,reset_d}<=2'b0;
else {reset_2d,reset_d}<={reset_d,reset};
end
assign reset_r = !reset_2d & reset_d;
======
※ 引述《light0617 (期待寒假)》之銘言:
: 各位大大好
: 我最近在寫碼錶上一個reset的功能
: 遇到了一個問題
: 下面是部分CODE
: input reset;//按鈕reset 每按一次重設
: input i_clk;
: input i_rts;//原本的東西
: reg r_reset=1'b0;
: reg cnt=1'b0;
: <版本一>
: always @(reset)
: begin
: cnt<=0;
: else
: always @(posedge i_clk , negedge i_rts)
: begin
: if(i_rts==0 ) cnt<=0;
: else cnt<=cnt+1b'1;
: end
: 我在ModelSim compile沒問題 但在Quartus 說cnt不能設定2次
: 後來改了一下
: <版本二>
: always @(reset)
: begin
: if(cnt==0) r_reset<=1'b0;
: else r_reset<=1'b1;
: else
: always @(posedge i_clk , negedge i_rts)
: begin
: if(i_rts==0 || r_reset==1'b1) cnt<=0;
: else cnt<=cnt+1b'1;
: end
: 我在ModelSim compile沒問題 但在Quartus 說
: Error: Can't elaborate top-level user hierarchy
: 應該是不能讓r_reset和cnt放在兩個always上??
: 所以
: 請教各位大大要如何實做reset按鈕呢><
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 182.234.8.253
※ 文章網址: http://www.ptt.cc/bbs/Electronics/M.1401594445.A.4A4.html
推
06/01 15:44, , 1F
06/01 15:44, 1F
→
06/01 15:44, , 2F
06/01 15:44, 2F
推
06/01 15:48, , 3F
06/01 15:48, 3F
→
06/01 16:24, , 4F
06/01 16:24, 4F
推
06/01 20:07, , 5F
06/01 20:07, 5F
→
06/02 07:47, , 6F
06/02 07:47, 6F
→
06/02 07:47, , 7F
06/02 07:47, 7F
→
06/02 07:49, , 8F
06/02 07:49, 8F
→
06/02 07:49, , 9F
06/02 07:49, 9F
→
06/03 08:29, , 10F
06/03 08:29, 10F
推
06/03 11:44, , 11F
06/03 11:44, 11F
→
06/04 07:58, , 12F
06/04 07:58, 12F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):