一、編程環境 軟件: Quartus 12.0 Web 硬件: DE2開發板 二、例程功能描述 本例程實現從CPU到PC和PC到PC兩種典型的串口通信模式之間的切換及傳輸,其中切換方式為通過按鍵切換,具體為: Key0按下:PC->PC的傳輸,即FPGA通過接收PC串口發送的數據并將其反饋給PC端。 Key1按下:CPU->PC的傳輸,即FPGA中發送的測試數據行“Welcome to UseUART\r\n"按大約每兩秒一次的形式發送至PC端。 其中uart的傳輸模塊采用了crazy Bingo的傳輸模塊,因為串口僅支持單工通信,故設置兩個模式分別進行測試。 二、總體RTL綜合后框圖及具體描述(因綜合后圖比較大,清晰的圖請放大) file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-32359.png 本例程所包含模塊與功能: 1)clk_generator 本例所使用的系統時鐘為50MHz通過本分頻模塊產生發送數據時的時鐘115200Hz(clk_bps)以及采用時鐘16*115200Hz(clk_smp)。 2)key_scan 通過計數方式消抖并返回key0和key1的值,同時產生一個時鐘周期的收到按鍵信號key_flag。 3)mode_switcher 根據收到按鍵信號key_flag以及當前key_value切換傳輸狀態,并生成當前狀態信號。 4)uart_receiver 利用狀態機進行接收數據的采樣,同時采樣點設置在7的位置(因為采樣頻率為發送頻率的16倍)獲取更加穩定的信號值,產生接收一個字符成功以及接收數據信號等。 5)cpudata 模擬產生發送串口數據的模塊,可以每隔兩秒鐘進行發送,設計時,延時注意提前一個結束字符進行重新開始計數,并且區分清楚什么時候對相關變量進行賦值。 6)mux2 多位數據Mux2選擇器,根據Send_Mode選擇當前應當送至發送模塊的數據。 7)uart_transfer Uart發送數據模塊,用于發送串口數據。 附串口設置: file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-14838.png ![]() |