打印

求助:基于FPGA的矩阵键盘程序

[复制链接]
2954|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hd328329346|  楼主 | 2010-4-25 15:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助:
FPGA的键盘扫描程序,以下是我用Verilog写的,但出现如下错误
Error (10170): Verilog HDL syntax error at jianpan.v(17) near text "b";  expecting ";"

敢问高手改如何解决啊
module jianpan(clk,hang1,lie1,out);
input clk,hang1,lie1;
output out;
wire[2:0] hang1;
wire[5:0] lie1;
reg[2:0] hang;
reg[5:0] lie;
reg[3:0] out;
integer i,out1,out2,out3;

initial
begin
i=0;
out1=0;
out2=0;
out3=0;
hang1=3b'111;    错误提示在这行
lie1=6b'000000;   这行也有同样的错误
end

initial
begin
hang=hang1;
lie=lie1;
end

always(@posedge clk)
begin
if(hang==3b'111)
out=4b'0000;
else if(out1==0)
begin
lie=6b'011111;
if(hang[0]==1)
lie=6b'101111;
if(hang[0]==1)
lie=6b'110111;
if(hang[0]==1)
lie=6b'111011;
if(hang[0]==1)
lie=6b'111101;
if(hang[0]==1)
lie=6b'111110;
if(hang[1]==1)
lie=6b'011111;
if(hang[1]==1)
lie=6b'101111;
if(hang[1]==1)
lie=6b'110111;
if(hang[1]==1)
lie=6b'111011;
else
out1=4b'1001;
else
out1=4b'1000;
else
out1=4b'0111;
else
out1=4b'0111;
else
out1=4b'0110;
else
out1=4b'0101;
else
out1=4b'0100;
else
out1=4b'0011;
else
out1=4b'0010;
else
out1=4b'0001;
end
end
always(@posedge clk&&out1!=0)
begin
if(hang==3b'111)
out=4b'0000;
else if
lie=6b'011111;
if(hang[0]==1)
lie=6b'101111;
if(hang[0]==1)
lie=6b'110111;
if(hang[0]==1)
lie=6b'111011;
if(hang[0]==1)
lie=6b'111101;
if(hang[0]==1)
lie=6b'111110;
if(hang[1]==1)
lie=6b'011111;
if(hang[1]==1)
lie=6b'101111;
if(hang[1]==1)
lie=6b'110111;
if(hang[1]==1)
lie=6b'111011;

else
out2=4b'1001;
else
out2=4b'1000;
else
out2=4b'0111;
else
out2=4b'0111;
else
out2=4b'0110;
else
out2=4b'0101;
else
out2=4b'0100;
else
out2=4b'0011;
else
out2=4b'0010;
else
out2=4b'0001;
end



always(@posedge clk&&out3==0)
begin
if(hang==3b'111)
out=4b'0000;
else if
lie=6b'011111;
if(hang[0]==1)
lie=6b'101111;
if(hang[0]==1)
lie=6b'110111;
if(hang[0]==1)
lie=6b'111011;
if(hang[0]==1)
lie=6b'111101;
if(hang[0]==1)
lie=6b'111110;
if(hang[1]==1)
lie=6b'011111;
if(hang[1]==1)
lie=6b'101111;
if(hang[1]==1)
lie=6b'110111;
if(hang[1]==1)
lie=6b'111011;
else
out3=4b'1001;
else
out3=4b'1000;
else
out3=4b'0111;
else
out3=4b'0111;
else
out3=4b'0110;
else
out3=4b'0101;
else
out3=4b'0100;
else
out3=4b'0011;
else
out3=4b'0010;
else
out3=4b'0001;
end

always(@posedge clk)
begin
lie=6b'111110;
if(hang[2]==0)
i=i+1;
if(i==1)
out=out1;
    else if(i==2)
out=out2;
    else if(i==3)
out=out3;

相关帖子

沙发
hd328329346|  楼主 | 2010-4-25 16:21 | 只看该作者
大家还是不要看这个程序了,问题太多,太复杂了。进来的了留个言吧,50分送你啦~

使用特权

评论回复
板凳
hd328329346|  楼主 | 2010-4-25 16:54 | 只看该作者
在verilog里面,if语句能嵌套多少if啊,像上面嵌了10个的行不行?

使用特权

评论回复
地板
lelee007| | 2010-4-25 17:15 | 只看该作者
晕翻了

怎么往input里边赋值啊?!

你这是要干吗了?!

使用特权

评论回复
5
zifeiyuuuu| | 2010-4-26 09:34 | 只看该作者
哈哈, 你这是别人的例子吧、、  我昨天也看到了
4b'0110;  所有这种格式都不正确, 还有 这么多 if else 要是我可能会考虑一下case casex 语句喔、

使用特权

评论回复
6
ma9453| | 2010-4-26 12:40 | 只看该作者
这个是按C语言的思路写VERILOG吧。。。。。。

使用特权

评论回复
7
hd328329346|  楼主 | 2010-5-16 10:11 | 只看该作者
唉~
写的真丢人。送分了~

使用特权

评论回复
8
ljolove| | 2010-5-19 10:30 | 只看该作者
LZ我有一份写好的扫描矩阵键盘的程序如果需要的话我给发上来

使用特权

评论回复
9
sinetech01| | 2010-5-22 20:54 | 只看该作者
输入给赋值能对嘛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

155

帖子

0

粉丝