过程连续赋值为什么出错了,书上的代码居然不能编译
Verilog HDL应用程序设计实例精讲这本书里面的1个例子
//异步清零输入的下降沿D触发器
module test1(q,d,clr,clk);
input d,clr,clk;
output q;
reg q;//输出,寄存器类型
always @(clr)//清零信号
begin
if(!clr)//下降沿清零
assign q = 0;
else
deassignq;
end
always @(negedge clk)//下降沿时钟
begin
q = d;
end
endmodule
编译失败了.
Error (10043): Verilog HDL unsupported feature error at test1.v(11): Procedural Continuous Assignment to register is not supported
assign q = 0; 不能在 always @( 內 sky5566 发表于 2012-9-8 11:49 static/image/common/back.gif
assign q = 0; 不能在 always @( 內
难道那本书写错了??? always里面用非阻塞,看看 skynet 发表于 2012-9-8 12:01 static/image/common/back.gif
难道那本书写错了???
沒有看過這樣的寫法{:sad:}
那本書可以丟掉了{:titter:} 这个 assign能放在那里? 本人小白一个 ╮(╯_╰)╭ 看来那本书实在是不怎么样{:sweat:}{:funk:} 什么书啊,报书名吧,别再坑了别人。 Verilog HDL应用程序设计实例精讲
139页
skynet 发表于 2012-9-8 12:01 static/image/common/back.gif
难道那本书写错了???
楼上正解,建议参考夏宇闻的verilog数字电路设计 本帖最后由 sky5566 于 2012-9-9 09:30 编辑
可能是書中作者自己散播的掃描板吧,一般掃描解析度很低的假的
{Verilog HDL数字系统设计 王建民田晓华} 掃瞄板很清楚,站內有
好像也有这种用法,不是咱们讲的连续赋值语句,这种语句是不可综合的,应该是仿真电路里使用,也很疑惑。 reg q;//输出,寄存器类型
always @(clr)//清零信号
begin
if(!clr)//下降沿清零
assign q = 0;
reg 不能用于assign吧 技术类书籍只看国外原著或者原著翻译的经典教材。 我记得是有这种写法的,不过是仿真用的,正常的综合工具是无法通过的,请不要用这种方法去写
页:
[1]