1. 项目概述与设计思路
做数电实验课设最头疼的就是选题和实现了,我当年做电梯控制系统时也踩过不少坑。这次分享的基于Verilog和Vivado的两层楼电梯控制系统,算是比较经典又实用的选题。这个系统不仅包含了状态机设计、按键处理、数码管显示等基础模块,还加入了蜂鸣器提示和LED状态指示,完全能满足课程设计的要求。
先说说整体设计思路。电梯控制本质上是一个状态机系统,需要处理两种请求:楼内按键(上下行请求)和楼外按键(呼叫电梯)。对于两层楼的情况,状态相对简单,但已经包含了电梯控制的所有核心逻辑。我采用模块化设计,将系统分为按键消抖模块、状态控制模块、计时模块和显示模块,这样不仅结构清晰,也便于调试和扩展。
在实际开发中,我使用的是Vivado 2017.4版本和xc7a35tftg256-1芯片的开发板。选择这个版本是因为它稳定且对校园教育许可支持良好,避免了一些新版本的兼容性问题。整个项目从设计到实现大约花了一周时间,其中大部分时间都在调试状态机的逻辑和时序问题。
2. 开发环境搭建与配置
搭建开发环境是第一步,也是很多同学容易卡住的地方。首先需要安装Vivado 2017.4,这个版本在Windows 10和11上都能稳定运行。安装时记得勾选WebPACK版本就行,完全免费且功能足够课程设计使用。
安装完成后,需要配置开发板支持文件。有些学校的开发板不是标准型号,可能需要手动添加板级支持包。具体操作是在Vivado中选择Tools -> Settings -> IP -> Repository,然后添加开发板提供的板级支持文件路径。这一步很重要,否则后续生成比特流时会遇到引脚分配错误。
创建新项目时,我建议选择RTL Project,并勾选“Do not specify sources at this time”,这样可以在项目创建后再添加Verilog文件。目标语言选择Verilog,仿真语言也选择Verilog保持一致性。在Default Part页面,可以直接搜索xc7a35tftg256-1来选择对应芯片。
环境配置中最容易出问题的是约束文件。我提供的约束文件是针对特定开发板的,如果你的板子型号不同,需要根据原理图修改引脚分配。特别要注意时钟引脚的分配,如果遇到时钟报错,可以尝试添加set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_IBUF]来绕过严格检查。
3. 核心模块设计与实现
3.1 状态机控制模块
电梯控制的核心是一个有限状态机(FSM),我设计了五个主要状态:上行状态(state_up1和state_up3)、下行状态(state_dow0和state_dow2)以及待机状态(state_wait)。状态转换的逻辑主要基于当前楼层、按键输入和计时器状态。
always@(posedge clk) begin
if(lou1 & (~lou2) & (key_d1 | key_d3)) begin
if(status_up1 == 1) begin
state_up1 <= 1;
state_wait <= 0;
end
else if (status_up3 == 1) begin

|2024数电实验课设实战&spm=1001.2101.3001.5002&articleId=155662860&d=1&t=3&u=f4cd17e6d62843269f485c571a3ed109)
7894

被折叠的 条评论
为什么被折叠?



