• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

UART串口收發(fā)器設(shè)計VHDL代碼Quartus仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

2-250514195J5426.doc

共1個文件

名稱:uart串口收發(fā)器設(shè)計VHDL代碼Quartus仿真

軟件:Quartus

語言:VHDL

代碼功能:

uart串口收發(fā)器設(shè)計:
1、輸入的8位并行數(shù)據(jù)使用UART協(xié)議串行輸出。
2、可以接收UART協(xié)議信號,并將其并行輸出(8位)。
3、波特率為9600bit/s。
4、帶有奇偶校驗位(奇校驗或者偶檢驗)。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計文檔:

1.工程文件

2.程序文件

3.程序編譯

4.RTL圖

5.仿真圖

整體仿真圖

波特率模塊

發(fā)送模塊

接收模塊

部分代碼展示:

--uart串口收發(fā)器設(shè)計
--1、輸入的8位并行數(shù)據(jù)使用UART協(xié)議串行輸出
--2、可以接收UART協(xié)議信號,并將其并行輸出(8位)
--3、波特率為9600bit/s
--4、帶有奇偶校驗位(奇校驗或者偶檢驗)
LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
???USE?ieee.std_logic_arith.all;
--接收模塊
ENTITY?uart_rx?IS
???PORT?(
??????clk??????????????????:?IN?STD_LOGIC;--時鐘
??????rst_n????????????????:?IN?STD_LOGIC;--復(fù)位
??????baud16_tick??????????:?IN?STD_LOGIC;--波特率*16
??????uart_rx_buf_wr_en????:?OUT?STD_LOGIC;--接收使能
??????uart_rx_buf_wr_data??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--接收數(shù)據(jù)
??????uart_rx_err??????????:?OUT?STD_LOGIC;--校驗錯誤
??????uart_rxd?????????????:?IN?STD_LOGIC--接收串行數(shù)據(jù)
???);
END?uart_rx;
ARCHITECTURE?trans?OF?uart_rx?IS
???
???SIGNAL???data_len?????????????:??STD_LOGIC_VECTOR(3?DOWNTO?0);--數(shù)據(jù)長度--?5~8
???SIGNAL???stop_len?????????????:??STD_LOGIC_VECTOR(1?DOWNTO?0);--停止位長度--?1~2
???SIGNAL???check_len????????????:??STD_LOGIC;--校驗位長度--?0~1
???SIGNAL???check_mode???????????:??STD_LOGIC;--奇偶--?0~1
???
???SIGNAL?uart_rxd_bit_inv??????????:?STD_LOGIC;
???
???SIGNAL?Bau16_Tick_shift_r????????:?STD_LOGIC_VECTOR(1?DOWNTO?0);
???SIGNAL?Bau16_Tick_rising?????????:?STD_LOGIC;
???
???SIGNAL?state?????????????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?next_state????????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?cnt_baud16_tick???????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?cnt_rx_bit????????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???
???SIGNAL?rx_shift_reg??????????????:?STD_LOGIC_VECTOR(8?DOWNTO?0);
???
???SIGNAL?rx_check_sum??????????????:?STD_LOGIC;
???SIGNAL?local_check_sum???????????:?STD_LOGIC;
???SIGNAL?uart_rx_buf_wr_data_buf?:?STD_LOGIC_VECTOR(7?DOWNTO?0);
BEGIN
???data_len<="1000";--8位數(shù)據(jù)位
stop_len<="01";--1位停止位
check_len<='1';--1位校驗位
check_mode<='0';--奇校驗
???--?Drive?referenced?outputs
???uart_rx_buf_wr_data?<=?uart_rx_buf_wr_data_buf;--輸出接收數(shù)據(jù)
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????uart_rxd_bit_inv?<=?uart_rxd;--同步到時鐘下
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????Bau16_Tick_shift_r?<=?(Bau16_Tick_shift_r(0)?&?baud16_tick);
??????END?IF;
???END?PROCESS;

點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1524

  • 2-250514195J5426.doc
    下載

相關(guān)推薦