
基于FPGA的LED数码管控制系统的 Quartus 工程源码及文档说明.zip
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本资源包含基于Quartus平台的FPGA设计工程文件与详细文档,用于实现对LED数码管的有效控制。
基于FPGA的LED数码管控制系统设计采用Quartus工程源码及文档说明文件。
**功能描述:**
本系统实现串口通信功能,即FPGA与上位机之间的数据传输(波特率设置为9600bps,包含1个起始位、8个数据位和1个停止位)。通过串口调试工具以字符格式发送或接收字符串。当接收到数字“0到9”及字母“A至F”的指令后,在7段数码管上进行显示。
**Verilog代码:**
```verilog
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
entity uart_seg is
port(
clk : in std_logic; -- 输入50M时钟信号
rst : in std_logic; -- 复位信号输入端口
rxd : in std_logic; -- 串行数据接收端口
txd : out std_logic;-- 串行数据发送端口
en: out std_logic_vector(7 downto 0); -- 数码管使能输出
seg_data: out std_logic_vector(7 downto 0) -- 数码管显示的数据输出
);
end uart_seg;
architecture behave of uart_seg is
--信号定义部分
signal div_reg : integer range 0 to 326; -- 分频计数器,分频值由波特率决定。分频后得到频率为8倍波特率的时钟
signal div8_rec_reg: std_logic_vector(2 downto 0); -- 接收时隙计数值寄存器
signal state_rec : std_logic_vector(3 downto 0); -- 接受状态寄存器
signal clkbaud_rec : std_logic; -- 波特率接收使能信号
signal clkbaud8x : std_logic;-- 以波特率为频率的时钟,将发送或接受一个bit的时间周期分为8个时隙
signal recstart: std_logic; -- 开始接收标志
signal recstart_tmp: std_logic;
signal rxd_reg1, rxd_reg2 : std_logic; -- 接收数据缓存寄存器
signal rxd_buf : std_logic_vector(7 downto 0);-- 接受数据缓冲区
-- 分频参数,其值由对应的波特率计算而得。分频后的时钟频率是波倍特率的8倍。
begin
en <= 00000000; -- 数码管使能信号初始化为全低电平
process(clk, rst) begin
if(rising_edge(clk)) then -- 上升沿触发时钟事件
if (rst = 1) then -- 复位状态,清零计数器
div_reg <= 0;
else
if(div_reg = 324)then-- 当分频值达到设定的最大值(对应9600*8的频率)
div_reg<= 0; -- 计数器归零
else
div_reg <= div_reg + 1; -- 否则继续计数
end if;
end if;
end if;
end process;
end behave;
```
该代码实现了一个基于FPGA的串口通信模块,用于控制LED数码管显示从上位机发送来的数据。
全部评论 (0)


