【技术分享】以太网,FPGA就一定能搞定系列之芯片测试
0赞以太网,FPGA就一定能搞定系列之芯片测试
本系列博文节选自特权同学的FPGA开发电子书《SF-CY3 FPGA套件开发指南》。
最新设计文档下载地址:http://pan.baidu.com/s/1em79m
1 概述
CH395原厂提供了一个简单的基于PC的串口调试工具DEBUG395。因此我们可以使用SF-CY3核心板、SF-NET子板、SF-USB子板的连接,将SF-NET子板的UART接口连接到PC端。UART连接通路如图所示。看了这么一长串模块,其实我们的目的很简单,让PC机和SF-NET子板的UART连接到一起,只不过他们的电平不一致,所以需要SF-CY3核心板和SF-USB子板帮忙转接一下。
SF-CY3核心板中的FPGA需要些一段小代码,将CH395和FT232的UART的RX和TX互联起来。新建文件夹ex35,创建Quartus II工程,编写源代码如下。
module ex35(
ch395_tx,ch395_rx,ch395_rst_n,
ft232_rx,ft232_tx
);
//P1:1-2 for UART mode
//P2:1-2 P3:1-2 P4:1-2 for 9600bps
input ch395_tx; //CH395 UART-TX PIN_65
output ch395_rx; //CH395 UART-RX PIN_66
output ch395_rst_n; //CH395 RESET, ACTIVE LOW PIN_68
input ft232_tx; //FT232 UART-TX PIN_126
output ft232_rx; //FT232 UART-RX PIN_127
assign ch395_rx = ft232_tx;
assign ft232_rx = ch395_tx;
assign ch395_rst_n = 1'b1;
endmodule
进行引脚分配。然后编译工程,待板级环境搭建好后,将sof下载到SF-CY3核心板中。
3 板级环境搭建
SF-NET子板有4个跳线帽,P1的跳线帽选择用于设定FPGA与CH395的通信模式,对应的功能描述如下。本实例设定的UART通信模式,即P1的1-2PIN端接。
P1 |
通信模式 |
1-2 |
UART |
2-3 |
SPI |
P2\P3\P4的跳线帽选择用于设定UART通信模式下的上电波特率,对应的功能描述如下。本实例设定的启动波特率为9600bps,即P2\P3\P4均为1-2PIN端接。
P2 |
P3 |
P4 |
波特率 |
1-2 |
1-2 |
1-2 |
9600 bps |
1-2 |
1-2 |
2-3 |
57600 bps |
1-2 |
2-3 |
1-2 |
115200 bps |
1-2 |
2-3 |
2-3 |
460800 bps |
2-3 |
1-2 |
1-2 |
250000 bps |
2-3 |
1-2 |
2-3 |
1000000 bps |
2-3 |
2-3 |
1-2 |
3000000 bps |
2-3 |
2-3 |
2-3 |
921600 bps |
将SF-CY3核心板的插座P3和SF-NET子板的插座P5相连,将SF-CY3核心板的插座P2和SF-USB子板的插座P1相连,给SF-CY3核心板上电并连接好USB-Blaster下载线,同时别忘了将USB延长线连接到SF-USB的UART-USB端口(P4)上。
将编译好并生成sof文件的测试代码下载到SF-CY3核心板中。
4 PC端串口工具调试
如图所示,打开电脑的设备管理器,查看“端口(COM和LPT)”中的USB Serial Port所对应的端口号,笔者电脑的端口号对应COM59,这实际上是一个虚拟的COM口。
双击打开“DEBUG395”串口调试小工具。
如下左图所示,设定好串口号为COM59(根据实际分配串口号设定),波特率为9600bps,然后点击“打开串口”,便出现右图的显示状态,说明串口已经连接好(当然了串口连接好,并不能保证串口连接正确并且能够正常通信,这还需要实验者认真确认每个设备是否都连接的正确)。
如图所示,这里可以将CH375的基本命令逐个的测试一遍。在调试窗口中,如果单机“命令操作”下面的任意按钮,则右侧的“说明”窗口中将会显示这个命令对应的命令码、参数和功能,但不执行具体的串口收发操作。而双击“命令操作”某个按钮时,则将发送对应的命令,如果发送操作中带有用户可设定的参数,则会弹出一个对话框供参数的设置。实际收发的数据字节数会在窗口左下角显示出来,发送命令的具体状态在在“命令码发送/接收的数据”窗口中显示。
如图所示,我们双击“复位”按钮,则发送3个十六进制数据位“57 AB 05”,没有返回数据。
执行复位只有发送,没有返回,我们其实并不知道CH395和FPGA之间的通信是否正常了,接着我们可以试试“测试命令”按钮,弹出的“输入参数”对话框中,我们可以任意修改测试值,然后点击OK,这里所设置的测试值在发送给CH395后,会返回一个取反后的数据。
如图所示,当我们执行了当前的测试命令后,发送4个字节的十六进制数据“57 AB 06 55”,返回了1个字节数据“AA”正是我们所输入的数据“55”按位取反的结果。
如图所示,我们双击“获取版本号”后,显示发送了3个字节数据“57 AB 01”,返回1个字节数据“42”。
在芯片手册中,42H所对应的版本号应该是02H。
如图所示,我们双击“获取MAC地址”,则发送3个字节的命令数据“57 AB 40”,返回6个字节的MAC地址“84 C2 E4 F0 08 EF”。