毕设用SF-CY3的板子做交通灯控制器 现在跑不起来,急求解决,求大神们帮帮,解决者必有重谢

2019-07-15 22:43发布

tica, sans-serif, 宋体">第一个问题:EN使能信号连哪个端口好
第二个问题:SF-CY3外接端口怎么使用
第三个问题:程序是否有问题
这是verilog程序:module traffic(CLK,EN,LAMPA,LAMPB,ACOUNT,BCOUNT);
output[7:0] ACOUNT,BCOUNT;
output[3:0] LAMPA,LAMPB;
input CLK,EN;
reg[7:0] numa,numb;
reg tempa,tempb;
reg[2:0] counta,countb;
reg[7:0] ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft;
reg[3:0] LAMPA,LAMPB;
always @(EN)
if(EN)
begin //设置各种灯的计数器的预置数
ared  <=8'd55;  //55 秒
ayellow <=8'd5; //5 秒
agreen <=8'd40;  //40 秒
aleft  <=8'd5;  //15 秒
bred  <=8'd65;  //65 秒
byellow <=8'd5; //5 秒
bleft  <=8'd5;  //15 秒
bgreen <=8'd30;  //30 秒
end
assign ACOUNT=numa;
assign BCOUNT=numb;
always @(posedge CLK) //该进程控制 A 方向的四种灯
begin
if(EN)
begin
if(!tempa)
begin
tempa<=1;
case(counta) //控制亮灯的顺序
3'b000: begin numa<=agreen; LAMPA<=LAMPA[1]; counta<=3'b001; end
3'b001: begin numa<=ayellow;  LAMPA<=LAMPA[2]; counta<=3'b010; end
3'b010: begin numa<=aleft;  LAMPA<=LAMPA[0]; counta<=3'b011; end
3'b011: begin numa<=ayellow;  LAMPA<=LAMPA[2]; counta<=3'b100; end
3'b100: begin numa<=ared;  LAMPA<=LAMPA[3]; counta<=3'b000; end
default:  LAMPA<=LAMPA[3];
endcase
end
else begin //倒计时
if(numa>1)
if(numa[3:0]==0) begin
numa[3:0]<=4'b1001;
numa[7:4]<=numa[7:4]-1;
end
else numa[3:0]<=numa[3:0]-1;
if (numa==2) tempa<=0;
end
end
else begin
LAMPA<=LAMPA[3];
counta<=0; tempa<=0;
end
end
always @(posedge CLK) //该进程控制 B 方向的四种灯
begin
if (EN)
begin
if(!tempb)
begin
tempb<=1;
case (countb) //控制亮灯的顺序
3'b000: begin numb<=bred;  LAMPB<=LAMPA[3]; countb<=3'b001; end
3'b001: begin numb<=bgreen; LAMPB<=LAMPA[1]; countb<=3'b010; end
3'b010: begin numb<=byellow;  LAMPB<=LAMPA[2]; countb<=3'b011; end
3'b011: begin numb<=bleft;  LAMPB<=LAMPA[0]; countb<=3'b100; end
3'b100: begin numb<=byellow;  LAMPB<=LAMPA[2]; countb<=3'b000; end
default:  LAMPB<=LAMPA[3];
endcase
end
else
begin //倒计时
if(numb>1)
if(numb[3:0]==0) begin
numb[3:0]<=3'b1001;
numb[7:4]<=numb[7:4]-1;
end
else numb[3:0]<=numb[3:0]-1;
if(numb==2) tempb<=0;
end
end
else begin
LAMPB<=LAMPB[3];
tempb<=0; countb<=0;
end
end
endmodule


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
小**道
1楼-- · 2019-07-16 02:29
首先设置各种灯的计数器的预置数,你这样设置有什么意思???直接参数化不好吗???
然后你的EN信号怎么接,这个就是一个使能信号,看你设计需求,可以外接按键控制,也可以内部控制。
还有你的开发板不一定人人都用过,外部端口怎么用这个需要你自己解决吧
程序有没有问题?你也应该说一下你调试的现象吧,没人会给你看代码的
还有建议楼主先从点亮一个LED灯开始 最佳答案
王久强
2楼-- · 2019-07-16 07:51
begin完了是不是没加end
还有整个程序完了没见endmodule
s*v
3楼-- · 2019-07-16 10:26
 精彩回答 2  元偷偷看……
s*v
4楼-- · 2019-07-16 12:52
小**道 发表于 2016-5-18 13:39
首先设置各种灯的计数器的预置数,你这样设置有什么意思???直接参数化不好吗???
然后你的EN信号怎么接,这个就是一个使能信号,看你设计需求,可以外接按键控制,也可以内部控制。
还有你的开发板不一定人人都用过,外部端口怎么用这个需要你自己解决吧

请问,
预置数怎么参数化,能举个例子么
板子的现象就是只是红灯亮一下,就结束了,计数器和初始值好像都有问题
小**道
5楼-- · 2019-07-16 14:57
s*v 发表于 2016-5-18 14:32
请问,
预置数怎么参数化,能举个例子么
板子的现象就是只是红灯亮一下,就结束了,计数器和初始值好像都有问题

哪一个红灯亮一下啊,参数化你百度一下就行了,parameter用法
小**道
6楼-- · 2019-07-16 17:46
小**道 发表于 2016-5-18 14:59
哪一个红灯亮一下啊,参数化你百度一下就行了,parameter用法

算了,你的程序有问题,是在做毕设吗,如果是,建议你百度一下这个工程,网上有原码,你状态机有问题

一周热门 更多>