求助!懂verilog HDL语言的来

大家帮我看看这个三八译码器的程序,帮我找找哪里错了~~谢谢了!!module38(A,B);input[2:0]A;output[7:0]B;reg[7:0]B;alwa... 大家帮我看看这个三八译码器的程序,帮我找找哪里错了~~谢谢了!!
module 38(A,B);
input [2:0] A;
output [7:0] B;
reg [7:0] B;

always@(B)
begin
case (a)
3'b000: B = 8'b00000001;
3'b001: B = 8'b00000010;
3'b010: B = 8'b00000100;
3'b011: B = 8'b00001000;
3'b100: B = 8'b00010000;
3'b101: B = 8'b00100000;
3'b110: B = 8'b01000000;
3'b111: B = 8'b10000000;
endcase
end
endmodule
展开
 我来答
佘影
2009-04-01 · TA获得超过448个赞
知道小有建树答主
回答量:69
采纳率:0%
帮助的人:109万
展开全部
(1) 模块名称“38”错误,Verilog中标识符是一组数字、字母、下划线、$的组合,但开头必须是字母。
(2) always@(B) 中敏感变量列表里改成A
(3) 端口声明时用的是大写字母A,程序case语句里用的是小写a,Verilog区分大小写,所以提示变量未定义。应该前后统一。
(4) 建议用case语句时加上default,虽然程序中A的取值不可能超过你所列的值。
seagull5414
2009-04-01 · TA获得超过367个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:109万
展开全部
module my_38(A,B);
input [2:0] A;
output [7:0] B;
reg [7:0] B;

always@(A)
begin
case (A)
3'b000: B = 8'b00000001;
3'b001: B = 8'b00000010;
3'b010: B = 8'b00000100;
3'b011: B = 8'b00001000;
3'b100: B = 8'b00010000;
3'b101: B = 8'b00100000;
3'b110: B = 8'b01000000;
3'b111: B = 8'b10000000;
endcase
end
endmodule
该成这样就OK了,原因是模块明必须以字母开头,你要做的是38译码所以always的敏感列表要该成A,case中的a是没用定义的变量Verilog是大小写敏感的也就是大写和小写是不同的变量你这里只有A所以把a改成A。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yty1985
2009-04-10 · TA获得超过489个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:218万
展开全部
case (a) 这个A要大写
always@(B) 应该是always @(A)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式