FPGA Uart串口例子
一、编程环境软件: 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综合后框图及具体描述(因综合后图比较大,清晰的图请放大)
NI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-32359.png" border="0" alt="" />
本例程所包含模块与功能:
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发送数据模块,用于发送串口数据。
用于发送串口数据。
FPGA Uart串口例子
页:
[1]