用户工具

站点工具


icore4tx_fpga_17

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
icore4tx_fpga_17 [2020/06/28 19:02]
zgf 创建
icore4tx_fpga_17 [2022/04/01 11:38] (当前版本)
sean
行 1: 行 1:
 +
 +|  **银杏科技有限公司旗下技术文档发布平台** ​ ||||
 +|技术支持电话|**0379-69926675-801**|||
 +|技术支持邮件|Gingko@vip.163.com|||
 +^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 +|  V1.0  |  2020-06-29 ​ |  gingko ​ |  初次建立 ​ | 
 +
 +\\
 +\\ 
 ===== 实验十七:串口通信实验——基于FPGA实现UART通信 ===== ===== 实验十七:串口通信实验——基于FPGA实现UART通信 =====
  
行 6: 行 15:
   - 掌握UART的Verilog编程实现方法。   - 掌握UART的Verilog编程实现方法。
 ==== 二、 实验设备及平台 ==== ==== 二、 实验设备及平台 ====
-  - iCore4TX 双核心板;​+  - iCore4TX 双核心板[[https://​item.taobao.com/​item.htm?​spm=a1z10.1-c-s.w4004-22598974120.3.29da532fLkazHH&​id=614919247574|点击购买]];
   - iCore4TX底板(杜邦线一套);​   - iCore4TX底板(杜邦线一套);​
   - iTool3Pro(串口TTL)或带有相同功能的串口模块;​   - iTool3Pro(串口TTL)或带有相同功能的串口模块;​
行 14: 行 23:
   - 电脑一台。   - 电脑一台。
 ==== 三、 实验原理 ==== ==== 三、 实验原理 ====
-UART(通用异步收发器)是一种通用串行数据总线,用于异步通信,可实现全双工传输和接收,是硬件开发时常用的一种通信接口。USART(通用同步异步收发器)在UART的基础上增加了同步功能,即USART是UART的增强型,异步通信的时候和UART没有区别。 ​    ​UART通信具有两根信号线,一根用于发送数据,一根用于接收数据。然而数据的传输是按照字节进行传输的,因此在发送时需要将并行数据转换成串行数据,接收时需要将串行数据转换成并行数据。 +  * UART(通用异步收发器)是一种通用串行数据总线,用于异步通信,可实现全双工传输和接收,是硬件开发时常用的一种通信接口。USART(通用同步异步收发器)在UART的基础上增加了同步功能,即USART是UART的增强型,异步通信的时候和UART没有区别。 
-UART通信传输是以帧为单位的,每帧数据有4部分构成:起始位、数据位、奇偶校验位和停止位。以8位字长的串口发送数据帧为例,其帧协议如图17.1所示,从图中可以看到,初始状态时,传输线上为高电平,在持续一个波特的低电平之后,是发送的有效数据。之后是至少一个波特高电平的停止位。 +  * UART通信具有两根信号线,一根用于发送数据,一根用于接收数据。然而数据的传输是按照字节进行传输的,因此在发送时需要将并行数据转换成串行数据,接收时需要将串行数据转换成并行数据。 
-图17-1 +  ​* ​UART通信传输是以帧为单位的,每帧数据有4部分构成:起始位、数据位、奇偶校验位和停止位。以8位字长的串口发送数据帧为例,其帧协议如图17.1所示,从图中可以看到,初始状态时,传输线上为高电平,在持续一个波特的低电平之后,是发送的有效数据。之后是至少一个波特高电平的停止位。 
-在UART通信中有一个重要的参数,即波特率,它表征了串口的传输速度,表示1秒内传输的二进制位的个数,波特率越大表示1秒内传输的二进制位数越多,反之,越少。以115200波特率为例,表示1秒钟传输115200个二进制位,每传输一个二进制位需要1/​115200s。本实验代码中,每16个时钟周期发送和接收一个二进制位,则时钟频率需要为1.8432M,既:​ +{{ :​icore4tx:​icore4tx_fpga_17_1.png?​direct |图17-1}} 
-**115200 * 16 =1.8432M** +  ​* ​在UART通信中有一个重要的参数,即波特率,它表征了串口的传输速度,表示1秒内传输的二进制位的个数,波特率越大表示1秒内传输的二进制位数越多,反之,越少。以115200波特率为例,表示1秒钟传输115200个二进制位,每传输一个二进制位需要1/​115200s。本实验代码中,每16个时钟周期发送和接收一个二进制位,则时钟频率需要为1.8432M,既:​ 
-UART接线原则:RX←-→TX,​TX←-→RX,如图17.2所示。 +        ​* ​**115200 * 16 =1.8432M** 
-图17-2+  ​* ​UART接线原则:RX←-→TX,​TX←-→RX,如图17.2所示。 
 +{{ :​icore4tx:​icore4tx_fpga_17_2.png?​direct&​300 |图17-2}}
 ==== 四、 代码讲解 ==== ==== 四、 代码讲解 ====
   * 本实验的整体功能是PC端串口助手发送1个字节的数据,FPGA接收完这个字节的数据后,再发送给串口助手。   * 本实验的整体功能是PC端串口助手发送1个字节的数据,FPGA接收完这个字节的数据后,再发送给串口助手。
行 126: 行 136:
 endcase endcase
 </​code>​ </​code>​
-发送模块主要负责将接收到的完整数据转换成串行数据,通过发送信号线串行输出,发送完成后产生发送完成标志。其代码如下:+  * 发送模块主要负责将接收到的完整数据转换成串行数据,通过发送信号线串行输出,发送完成后产生发送完成标志。其代码如下:
 <code verilog> <code verilog>
 case(tx_cnt) case(tx_cnt)
行 202: 行 212:
 </​code>​ </​code>​
 ==== 五、 实验步骤及实验结果 ==== ==== 五、 实验步骤及实验结果 ====
- +{{ :​icore4tx:​icore4tx_fpga_17_3.png?​direct&​600 |图17-3}}
-  +
-图17-3+
   * 1、将硬件正确连接,如图17-3所示(杜邦线连接可能与图中有所不同,以代码绑定引脚为准;注意FPGA串口模块的RX引脚和TTL端口的TX引脚相连, TX引脚和TTL端口的RX引脚相连)。   * 1、将硬件正确连接,如图17-3所示(杜邦线连接可能与图中有所不同,以代码绑定引脚为准;注意FPGA串口模块的RX引脚和TTL端口的TX引脚相连, TX引脚和TTL端口的RX引脚相连)。
   * 2、将编写好的代码进行编译,并下载到开发板中;   * 2、将编写好的代码进行编译,并下载到开发板中;
   * 3、打开串口调试工具,波特率设置为115200,并打开对应端口,如图17-4所示;   * 3、打开串口调试工具,波特率设置为115200,并打开对应端口,如图17-4所示;
-  +{{ :​icore4tx:​icore4tx_fpga_17_4.png?​direct |图17-4}}
-图17-4+
   * 4、在输入去发送一个字节的数据,FPGA会自动返回该数据,如图17-5所示。   * 4、在输入去发送一个字节的数据,FPGA会自动返回该数据,如图17-5所示。
-  +{{ :​icore4tx:​icore4tx_fpga_17_5.png?​direct |图17-5}}
-图17-5+
 ==== 六、 拓展实验 ==== ==== 六、 拓展实验 ====
  
   - 通过modelsim仿真软件观察串口通信时序。   - 通过modelsim仿真软件观察串口通信时序。
  
icore4tx_fpga_17.1593342178.txt.gz · 最后更改: 2020/06/28 19:02 由 zgf