[問題] Verilog ,Can't resove multiple ..疑問
版上的前輩好
小弟最近想實現一個功能
大致上是一個模塊
輸入有clk,與一些switch
是想實現電子鐘
然後可以用switch輸入小時與分鐘
但小弟卡在一個地方整個晚上了
實在不知道要如何改寫這段code
module time(
clk,out,SW
);
input clk;
input [9:0] SW;
output [16:0] out;
reg [31:0] cnt=0;
reg [16:0] p1=0;
reg [16:0] QH=0;
reg [16:0] QM=0;
reg load;
assign out = p1 ;
always@(SW[9] , SW[8])begin //賦值preset
if( SW[9]==1 && SW[8]==1 ) //preset hour
QH <= (SW[7:0] * 3600);
if( SW[9]==0 && SW[8]==1 )//preset min
QM <= (SW[7:0] * 60); // SW[9]=1時選擇賦值hour,=0時賦值給min
end
// SW[8] 的功用為,若為1則把我SW[7:0]給寄存到QM(QH)
always@(posedge SW[8])begin
load <= 1;
end
always@(posedge clk)begin
if( (p1==17'd86399) && (cnt==32'd5_000_000) )begin//1sec
cnt <= 32'b0;
p1 <= 17'd0;
end
else if(load)begin
p1 <= p1 +QH+QM;
load<=0;
end
else if(cnt==32'd5_000_000)begin // CLOCK=50Mhz
cnt <= 32'b0;
p1 <= p1 + 1'b1;
end
else cnt <= cnt + 1'b1;
end
endmodule
在compile時出現以下錯誤
Error (10028): Can't resolve multiple constant drivers for net "load" at
Lab4_p2.v(72)
小弟想很久,也揣摩過其他寫法但是都無功而返
我覺得這個寫法最為直觀,但Quartus就是不給我compile
錯誤提示應是在說我不能在不同的always裡面給同一個變數改變值
我有嘗試用別的信號,例如再用一個sig
但由於我SW[8]給值後會維持在1
會導致我的load訊號在1與0之間反覆跳,功能還是錯誤的
想請問前輩們這樣的情形我應該要怎樣才好?
PS: 給值一定要用Switch , 也就是這個原因導致我沒辦法讓他跳回0
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.142.4.165
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1445103172.A.BDE.html
→
10/18 02:36, , 1F
10/18 02:36, 1F
→
10/18 02:37, , 2F
10/18 02:37, 2F
→
10/18 02:38, , 3F
10/18 02:38, 3F
→
10/18 02:57, , 4F
10/18 02:57, 4F
推
10/19 16:38, , 5F
10/19 16:38, 5F