Verilog语言乒乓球机7段译码器(二)

本文详细介绍了使用Verilog语言设计乒乓球游戏机中的关键模块,包括发球选择模块、状态机、得分判断模块和记分译码器。状态机作为中央控制器,控制整个程序流程,记分译码器则将4位二进制码转换为7段显示。设计中包含了状态转换逻辑和七段数码管的编码实现。
摘要由CSDN通过智能技术生成

设计步骤和调试过程
1 、模块设计和相应模块代码
( 1 ) 发球选择模块 的设计
游戏开始时,必须先决定发球权在哪一方。同时,在游戏进行的过程中,必须能够正确交换甲乙双方发球权。相应的代码如下:
module Permissions(clk,res,in1,in2,out1,out2,en_jia,en_yi);
input clk,res,in1,in2;
output out1,out2,en_jia,en_yi;
reg out1,out2,en_jia,en_yi;
wire w1,w2,a,b;
or u2(w1,in1,in2);
add4 u1(.res(res),.c(w1),.cnt(w2));
select u3(.cnt(w2),.a(a),.b(b));
parameter[1:0] s0=1’b00,s1=1’b01;
reg[1:0] current_state,next_current;
always@(posedge clk or negedge res)
begin
if(!res)
current_state<=s0; // 复位
else
current_state<=next_current;
end
always@(current_state or next_current)
begin
case(current_state)
s0:
begin
out1<=1;
en_jia<=1;
en_yi<=0;
out2<=0;
if(a1)
next_current<=s1;
else
next_current<=s0;
end
s1:
begin
out1<=0;
en_jia<=0;
en_yi<=1;
out2<=1;
if(b
1)
next_current<=s0;
else
next_current<=s1;
end
endcase
end
endmodule
( 2 )状态机编程实现
状态机设置了 7 个状态,它们代表的具体数值依次是 0 到 6 。在波形模拟图中是用数值来表示状态的。
在整个程序中,状态机起的是中央控制器的作用,由它控制的信号来影响整个程序中的其他相关部分,如记分部分,发光二极管部分。乒乓球游戏机中有两个计数器,分别记忆甲和乙的得分,用发光二极管的轮流发光表示球的移动轨迹。状态机的进程如下 :
module state_machine (clk,res,key1,key2 ,led,jia,yi,en_jia,
en_yi,win,t1 , t2);
input clk,res,key1,key2,en_jia,en_yi,win,t1;
output jia,yi,t2;
reg

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值