基于FPGA的LED数码管控制系统设计quartus工程源码+文档说明文件.zip
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
基于FPGA的LED数码管控制系统设计quartus工程源码+文档说明文件 --/****************************************************************************** -- ** 功能描述:串口通信__FPGA和上位机通信(波特率:9600bps,10个bit是1位起始位,8个数据位,1个结束) -- 字符串(串口调试工具设成字符格式接受和发送方式),FPGA接受(0到9和A到F)后显示在7段数码管上。 --*******************************************************************************/ 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; --以8倍波特率为频率的时钟,它的作用是将发送或接受一个bit的时钟周期分为8个时隙 signal recstart:std_logic; --开始接收标志 signal recstart_tmp:std_logic; --开始接收标志 signal rxd_reg1:std_logic; --接收寄存器1 signal rxd_reg2:std_logic; --接收寄存器2,因为接收数据为异步信号,故用两级缓存 signal rxd_buf:std_logic_vector(7 downto 0); --接受数据缓存 -- 分频参数,其值由对应的波特率计算而得,按此参数分频的时钟频率是波倍特率的8 -- 倍,此处值对应9600的波特率,即分频出的时钟频率是9600*8(CLK 50M) begin en <= "00000000";--7段数码管使能信号 process(clk,rst) begin if(clk'event and clk = '1')then--上升沿触发 if(rst = '0')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
- 1
- 2
- 粉丝: 125
- 资源: 4768
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页