深圳手机集团网站建设,WordPress安装界面打不开,深圳网站论坛建设,如何注册一个自己的公司用 HLS 实现 UART 介绍 UART 是一种旧的串行通信机制#xff0c;但仍在很多平台中使用。它在 HDL 语言中的实现并不棘手#xff0c;可以被视为本科生的作业。在这里#xff0c;我将通过这个例子来展示在 HLS 中实现它是多么容易和有趣。 因此#xff0c;从概念上讲#xf… 用 HLS 实现 UART 介绍 UART 是一种旧的串行通信机制但仍在很多平台中使用。它在 HDL 语言中的实现并不棘手可以被视为本科生的作业。在这里我将通过这个例子来展示在 HLS 中实现它是多么容易和有趣。 因此从概念上讲这是一个微不足道的项目然而它对于对 HLS 感兴趣的人来说是有启发性的。 现在项目定义 下图显示了项目的简单结构。 我们在 FPGA 中的设计UART发送每当按下按钮时就会将其发送到计算机上的串口调试助手。 FPGA 板上的八个滑动开关用于输入数据字节例如字母或符号的 ASCII 代码。此外UP 按钮用作发送控制键。 设计很简单程序本身能接受开发板上拨码开关的数据然后添加一个“0”起始位和一个“1”停止位最后以9600 bit/s的波特率发送出去。 首先需要根据开发板上的时钟(本例是100MHz)进行分频生成串口发送所需的时钟。 bool delay(long long int n) {static bool dummy 0;for (long long int j 0; j n; j) {
#pragma HLS pipelinedummy !dummy;}return dummy;
}
void uart_baudrate_clock(bool baudrate_clk) {static bool s 0;s!s;baudrate_clk s;delay(5208);
} 生成速率时钟后简单的状态机可以将数据发送出去。 void uart_data_transfer(bool uart_tx, ap_uint8 data, bool baud_rate_clock, bool start) {static bool send_bit 1;static bool start_state 0;static bool transfer 0;static unsigned int count 0;static int state 0;ap_uint10 d ((bool)0b1, (ap_int8)data, (bool)0b0);if (start 1 start_state 0) {transfer 1;start_state 1;count 0;}if (start 0 start_state 1) {start_state 0;}if (baud_rate_clock 1 state 0 transfer 1) {send_bit d[count];if (count 10) {transfer 0;}state 1;}if (baud_rate_clock 0 state 1) {state 0;}uart_tx send_bit;
} 将这些代码综合到 RTL 模块后我们可以创建 Vivado 项目并生成 FPGA 比特流并验证。 总结 很简单的一个实例大家可以自行和HDL实现的方式进行对比。