Basys3/FPGA/Vivado/Verilog 4层楼的电梯控制系统实现【武汉理工大学计算机系统能力实训】

我是第一次学习verilog做的项目 有做的不好的地方欢迎指出

电梯控制系统

开发板:BASYS3

开发环境:Vivado 2019.1

作者:Jaye

分享请标明出处

1.要求

(1)实现电梯的状态判断、电梯的上下楼控制模块、电梯开门关门模块、电梯升降模块、电梯指示灯模块、电梯数码管显示模块等功能;

(2)从而实现四个楼层电梯的开门、关门、上行、下行等控制电路逻辑;

(3)采用自顶向下的方法对电梯控制系统的电路进行需求分析和电路设计;

(4)在Vivado集成开发环境中,编写Verilog语言的程序,实现上述功能逻辑功能;

(5)在FPGA Basys 3 开发板上进行测试。

2.模块设计

​ 电路分为以下九个模块设计:1.顶层模块,2.按钮消抖模块,3. 上下楼控制模块,4. led模块,5. 数码管显示模块,6. 开关门控制模块,7. 呼叫模块,8.电梯内的按钮响应模块,9. 按钮模拟模块。

3.操作方式

​ 见bilibili视频,链接如下:https://www.bilibili.com/video/BV1gT411g7dZ?share_source=copy_web

4.其它说明

​ 若项目无法正常打开或运行,你可以自己在Vivado里面创建项目,随后把“verilog源文件和constains文件”文件夹内的.v文件和.xdc文件分别导入进你的项目即可。

​ 若直接打开项目,在选择文件夹时选择“elevator_demo”即可
git仓库地址:https://github.com/Jaye-Xue/ElevatorControlSystem
如果你现在打不开,也可以从百度云下载:
链接:https://pan.baidu.com/s/1b3wmlciU6jp9JpkXHuWHaQ?pwd=abcd
提取码:abcd
演示视频:https://www.bilibili.com/video/BV1gT411g7dZ?share_source=copy_web

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用Vivado 2018.3软件和Verilog HDL语言实现Basys3四位数码管动态显示的一个简单例子。 首先,在Vivado中创建一个新项目,添加Basys3开发板作为目标板卡,并设置好约束文件。 然后,我们需要创建一个Verilog模块,用于控制四位数码管的动态显示。以下是一个示例代码: ```verilog module digit_display( input clk, // 时钟信号 input [3:0] data_in, // 输入数据,4位二进制数值 output reg [6:0] anodes, // 数码管阳极输出 output reg [6:0] segments // 数码管阴极输出 ); reg [25:0] counter; // 计数器,用于控制数码管动态显示 reg [3:0] digit; // 当前显示的数码管编号 // 数码管显示控制 always @(posedge clk) begin counter <= counter + 1; if(counter == 250000) begin // 50Hz 的刷新频率 counter <= 0; digit <= digit + 1; if(digit == 4) begin digit <= 0; end end end // 数码管数据输出 always @(posedge clk) begin case(digit) 0: begin anodes <= 7'b1111110; segments <= { data_in[0] ? 7'b0000001 : 7'b1111110, data_in[1] ? 7'b0000001 : 7'b1111110, data_in[2] ? 7'b0000001 : 7'b1111110, data_in[3] ? 7'b0000001 : 7'b1111110 }; end 1: begin anodes <= 7'b1100111; segments <= { data_in[0] ? 7'b0000001 : 7'b1111110, data_in[1] ? 7'b0000001 : 7'b1111110, data_in[2] ? 7'b0000001 : 7'b1111110, data_in[3] ? 7'b0000001 : 7'b1111110 }; end 2: begin anodes <= 7'b1001111; segments <= { data_in[0] ? 7'b0000001 : 7'b1111110, data_in[1] ? 7'b0000001 : 7'b1111110, data_in[2] ? 7'b0000001 : 7'b1111110, data_in[3] ? 7'b0000001 : 7'b1111110 }; end 3: begin anodes <= 7'b1110011; segments <= { data_in[0] ? 7'b0000001 : 7'b1111110, data_in[1] ? 7'b0000001 : 7'b1111110, data_in[2] ? 7'b0000001 : 7'b1111110, data_in[3] ? 7'b0000001 : 7'b1111110 }; end endcase end endmodule ``` 在这个模块中,我们使用计数器和一个 `digit` 变量来控制四位数码管的动态显示。每个数码管的数据由输入的 4 位二进制数值决定,通过 `case` 语句来选择要显示的数码管。在每个时钟上升沿时,根据 `digit` 的值输出相应的阳极和阴极信号。 最后,将这个Verilog模块添加到Vivado项目中,并生成比特流文件,烧录到Basys3开发板上即可实现四位数码管的动态显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值