uart_ip实现(uart_rx与uart_tx结合)

写在前面:在之前的部分我们已经完成了uart_rx与uart_tx的具体实现,并进行了相关仿真,结果也证明的逻辑与编码的正确性。在接下来的这部分,我们将结合之前的章节完成uart_ip的实现
1、总体设计
在这里插入图片描述
2、输入输出描述
在这里插入图片描述
3、代码实现
在这里插入图片描述

串行通信IP核 用于FPGA -- File Name: Baud_rate_generator.vhd -- Function: Baud rate generator for uart communication -- System clock:32MHz -- ************************************************************ -- 7.2 Build 11/02/2009 Full Version 1.0 -- Copyright for limang -- ************************************************************ library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; -- ************************************************************ -- Port Description -- clk: System clock -- data: Decision the Baud rate -- uart_clk: Clock output for uart -- ************************************************************ entity Baud_rate_generator is port ( clk:in std_logic; data:in std_logic_vector (3 downto 0); uart_clk:out std_logic ); end entity Baud_rate_generator; --*********************** -- Baud_rate for input --*********************** --| data | Baud_rate | --| 0000 | 1200 | --| 0001 | 2400 | --| 0010 | 4800 | --| 0011 | 9600 | --| 0100 | 14400 | --| 0101 | 19200 | --| 0110 | 28800 | --| 0111 | 38400 | --| 1000 | 57600 | --| 1001 | 115200 | --|others| for updata | --*********************** architecture behave of Baud_rate_generator is constant system_clock:integer:=32e6; signal divisor:integer range 4444 downto 46; signal cnt:integer range 4444 downto 0:=0; signal clk_tmp:std_logic; begin process(data) begin case data is when "0000" => divisor divisor divisor divisor divisor divisor divisor divisor divisor divisor null; end case; end process; process(clk) begin if clk'event and clk='1' then cnt<=cnt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值