为什么VHDL不能用always @(posedge clk or negedge reset)

module TEST2(clk,fs,reset);
input reset,clk;
output fs;
reg[3:0] n;
reg[10:0] res;
reg fs;
reg kai;
always @(negedge reset or posedge clk)
if(reset==1)
begin n<=10;kai<=0;res<=11'b01010101001;end
else
if (kai==0)
if (n!=0)
begin
fs<=res[n];
n<=n-1;
end
else
begin
fs<=res[0];
kai<=1;
end
endmodule
结果提示Error:Can't elaborate top-level user hierarchy 很急啊 在线等答案

你这是verilog,不是VHDL,你的always里面是if(reset==1),这个判断需要posedge reset来实现,像你这样写的negedge reset,就得判断if(reset==0)追问

谢谢了 不过为什么会这样啊?我想知道原因 我觉得2个语言的意义不是应该一样吗 只是一个上升一个下降而已

追答

上升沿触发的话,在触发的一瞬间,它是变为1,而不是变为0,所以你要判断reset==1,这都是基础语法规则,我也说不太清楚,但一定要记着

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-28
两种语言都可以实现同一种目的,但是总归为两种语言,vhdl和verilog中的有些规则与语法不能混用的,他们彼此都有特定的语法规则,你不能将他们混淆了
相似回答