QuartusII Verilog HDL语法错误?

下面的个程序为什么给寄存器赋值的时候,出现了语法错误。moduleLED_Chinese(clk_H,ex_s,ex_l);inputclk_H;output[15:0]... 下面的个程序为什么给寄存器赋值的时候,出现了语法错误。
module LED_Chinese(clk_H,ex_s,ex_l);
input clk_H;
output[15:0] ex_l;
reg[15:0] ex_l;
output[3:0] ex_s;
reg[3:0] ex_s;
reg[15:0] data[0:32];
data[0]='b0000000000000000;
data[1]='b0000000000010000;
data[2]='b0000000000010000;
data[3]='b0000000000010000;
data[4]='b0111111111111111;
data[5]='b1000000000010000;
data[6]='b0100000000010000;
data[7]='b0000011000010000;
data[8]='b0000000100010000;
data[9]='b0000000000010000;
data[10]='b0000000000010000;
data[11]='b0000000000000111;
data[12]='b1111111111111000;
data[13]='b0000000001100000;
data[14]='b0000000010000000;
data[15]='b0000000100000000;
always@(posedge clk_H)
begin
ex_s=ex_s+1;
ex_l=data[ex_s];
end
endmodule
错误如下:
Error (10170): Verilog HDL syntax error at LED_Chinese.v(8) near text "="; expecting ".", or an identifier, or "["
Error (10170): Verilog HDL syntax error at LED_Chinese.v(9) near text "="; expecting ".", or an identifier, or "["
Error (10170): Verilog HDL syntax error at LED_Chinese.v(10) near text "="; expecting ".", or an identifier, or "["
Error (10170): Verilog HDL syntax error at LED_Chinese.v(11) near text "="; expecting ".", or an identifier, or "["
Error (10170): Verilog HDL syntax error at LED_Chinese.v(12) near text "="; expecting ".", or an identifier, or "["
展开
 我来答
angela_angela
2011-11-21 · TA获得超过495个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:188万
展开全部
module LED_Chinese(clk_H,ex_s,ex_l,reset);
input clk_H;
input reset;
output[15:0] ex_l;
reg[15:0] ex_l;
output[3:0] ex_s;
reg[3:0] ex_s;
reg[15:0] data[0:32];

always@(posedge clk_H)
begin
if(reset) begin
data[0]<='b0000000000000000;
data[1]<='b0000000000010000;
data[2]<='b0000000000010000;
data[3]<='b0000000000010000;
data[4]<='b0111111111111111;
data[5]<='b1000000000010000;
data[6]<='b0100000000010000;
data[7]<='b0000011000010000;
data[8]<='b0000000100010000;
data[9]<='b0000000000010000;
data[10]<='b0000000000010000;
data[11]<='b0000000000000111;
data[12]<='b1111111111111000;
data[13]<='b0000000001100000;
data[14]<='b0000000010000000;
data[15]<='b0000000100000000;
ex_s<=1'b0;
ex_l<=32'b0;
end
else begin
ex_s<=ex_s+1;
ex_l<=data[ex_s];
end
end
endmodule

我修改了下,你可以试试看,应该是没有语法错误了,楼上说的挺对的
还有就是不可以采用阻塞赋值,应该采用非阻塞赋值的~~我已改过来了
pc_repair
2011-11-19 · TA获得超过1720个赞
知道小有建树答主
回答量:1150
采纳率:66%
帮助的人:503万
展开全部
1. data是reg型,不能在always外赋值.
2. ex_i, ex_s这些reg输出都需要在always里做初始化.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tang940706
2011-12-03
知道答主
回答量:13
采纳率:0%
帮助的人:13万
展开全部
data[0]='b0000000000000000;这一句应该改成:data[0]=16'b0000000000000000;你是16位的数据嘛,前面需要注明的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风子鉴
2011-12-02
知道答主
回答量:71
采纳率:0%
帮助的人:33万
展开全部
data这行你是要用数组来表示的吧,但这这样子你还不如单独拿出来例化一个模块呢。这样子是找不到了,其实你是把地址计数器和ROM给结合起来了吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式