作者light0617 (期待寒假)
看板Electronics
标题[问题] verilog reset问题
时间Sat May 31 02:35:44 2014
各位大大好
我最近在写码表上一个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按钮呢><
--
推 steven0529: 小学时会有人说要烙国中生打人 05/20 12:19
→ steven0529: 国中时会有人说要烙高中生打人... 05/20 12:19
→ imanikki: 可是高中没人说要烙大学生打人 05/20 12:20
→ egg9: 因为大学生都在打魔兽吃泡面 要烙的话也只会烙赛 05/20 12:22
推 youaten0112:因为大学生认为打人不会增加经验值也不会掉宝..... 05/20 12:26
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.164.147.127
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Electronics/M.1401474948.A.4E0.html
1F:推 Leadgen:第一个问题是,有两个不同的东西,在推同一个reg。 05/31 12:45
2F:→ Leadgen:你只能用一个always去描述。 05/31 12:46
3F:推 Leadgen:第二个问题,一个是非同步的reset,一个是同步的。 05/31 12:49
4F:→ Leadgen:你把非同步的放在第一层,同步的放在第二层就行了。 05/31 12:50
5F:推 appendixisu:always @(posedge i_clk or negedge i_rts) begin 05/31 16:02
6F:→ appendixisu:if (i_rts==0) cnt <= 0 ; 05/31 16:02
7F:→ appendixisu:else if (reset==0) cnt <= 0 ; 05/31 16:03
8F:→ appendixisu:else cnt <= cnt + 1'b1 ; 05/31 16:03
9F:→ appendixisu:end 05/31 16:03
10F:→ light0617:to a大 reset按一次变成1 这样不就无法归零了吗?? 06/01 00:44
11F:→ light0617:若reset 真的为0 可是这样不就直接结束的吗 06/01 00:45
12F:→ light0617:可能我没说清楚 我是希望 按一次reset 可以归零重新计时 06/01 00:46
13F:→ light0617:感觉好难做出来QQ 06/01 00:46
14F:→ light0617:L大的同步的放在第一层,同步的放在第二层 是指哪个地方 06/01 00:47
15F:→ haworz:你把a大的code当中的reset==0改为reset==1 应该就能达成你 06/08 23:05
16F:→ haworz:要的功能 06/08 23:05