Quartus 11.0说:
错误(10028):无法解决网络的多个常量驱动因素[9]"
代码如下:
module make_counter(h, clk, P);
input wire h;
input wire clk;
output wire P;
reg r=1'b1;
reg[9:0] n=10'b0000000000;
always @(posedge h)
begin
n<=0;
end
always @(negedge clk)
begin
if(n<600)
n<=n+1'b1;
if(n==106)
r<=1'b0;
else if(n==517)
r<=1'b1;
else;
end
assign P=r;
endmodule
########### image is here ###########
图像是我想要的。当flag1开始设置n = 0,并计数clk; 当count到flag2时,设置P = 0;当计数到红色箭头时,设置P = 1;
答案 0 :(得分:0)
正如警告所示,n[9]
有多个驱动程序,实际上n
和r
都有,n
和r
都被驱动在initial
和always
中,在合成设计时,reg只能有一个驱动程序。 n
由多个always
块驱动。
对于综合,reg应该只从一个always
块驱动。
对于驱动n
的多个始终块,只将它们组合成一个,并且只使用一个时钟,例如clk
。
如果目的是为n
和r
指定默认值,请在声明中进行设置,然后删除initial
,如:
reg r = 1'b1;
reg[9:0] n = 0;
但是,如果可能,请考虑添加复位信号,然后使用此复位信号将复位值同步或异步地分配给寄存器。
答案 1 :(得分:0)
假设h
与clk
同步,只需抽样h
并找出样本值何时为低且当前值为高(例如h
上升)。这种方式n
在一个始终块(这是合成所需)内分配,并且所有内容都是相同的时钟域。
always @(negedge clk) begin
past_h <= h;
if(!past_h && h) begin // detect 0->1
n <= 10'h000;
end
else begin
n <= n + 1'b1;
end
end
如果h
是异步的,那么保持信号清洁会变得更加复杂。在这种情况下,我建议阅读Cliff Cummings的Clock Domain Crossing (CDC) Design & Verification Techniques
答案 2 :(得分:0)
您可以尝试将posege h移动到与negedge Clock相同的总是块中,并根据输入逻辑对h和clk进行采样。如果h在忽略clk之前变低,则可能会发生这种情况。
driver.get ("https://example.com")
driver.switch_to.window(driver.window_handles[1])
wait = WebDriverWait(driver, 30)
abc = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,, ".blue > .fa")))
abc.click()
actionChains = ActionChains(driver)
element = driver.find_element_by_id("myid")
actionChains.move_to_element(element).perform();
答案 3 :(得分:-1)
我认为它会帮助你。我已经在xilinx 14.5中完成了这个合成。
module make_counter(h, clk, P);
input wire h;
input wire clk;
output wire P;
reg r=1'b1;
reg[9:0] n=10'b0000000000;
task cpu_write;
begin
@ (posedge h);
n <= 0;
@ (posedge clk);
if(n<600)
n<=n+1'b1;
if(n==106)
r<=1'b0;
else if(n==517)
r<=1'b1;
else;
end
endtask
assign P=r;
endmodule