PC至FPGA的通信方式选取——Virtual JTAG

来源:互联网 发布:行知职业学校 编辑:程序博客网 时间:2024/05/14 03:20

近几日都在学习PC和FPGA的通信。选择Virtual JTAG的原因是因为其符合我的硬件资源,而不是因为高效或者低成本。
由于自己之前毫无做过硬件接口的经历,所以这次的通信方式选择完全就是一个无厘头。下面是之前的通信方式选择结果。


rs232通信方式
1、即时在开发板上有MAX232电平转换芯片,但是
2、我没有USB-RS232的线,无法通信。

USB通信方式
1、板子上具有ISP1362的芯片;
2、具有与USB Host配套的母口(这个母口没法和我laptop的母口相连);还有一个是USB Device,没有这种线(后来发现是有的,和USB-blaster一样)。
3、但是这个USB Device port is used for Nios ii 操作系统,编程过程中可能需要用到RS232串口通信,当用到这种方式进行通信的时候,其实又回到了问题方式1,暂时考虑中……

Ethernet 通信方式
1、有接口网线;
2、在DE2_user_manual的示例文档中仍然有用到Nios II操作系统,没办法只能自己先学学了。Nios II


再加上项目组之前就用的是网络发送数据,我见研二师兄LWJ也在其电脑上发送过Yes和No的指令,中间的连线用的是网线,所以就采取目前拥有的硬件条件进行编程吧,网线+DE2 开发板(电源)+JTAG下载线+VGA视频线+显示器。

当开启了学习Nios II的学习短暂高潮之后,由于博文《基于Qsys的第一个Nios II系统设计》中也用的是DE2的开发板,然后和我的需求差不多——在FPGA上建立操作系统,然后进行数据接收,和数据发送。因此博文《基于QsysNios II流水灯系统设计》也接着学习,但是在我的板子上实现的过程中,接连出现了SDRAM外设的引脚在LED.bdf文件中接不出来,Symbol LED_BASE Can`t be resolved,Expected TimeStamp 和TargetDevice ID 不匹配的情形,第一个问题是在Qsys设计过程中需要把器件进行导出,在Export一列要填上名字,第二个问题添加#include<io.h>,但是花了一天多的时间也没能解决后两个问题,所以就感觉陷入窘境——就连一个最简单的流水灯显示,也做不了——我一贯认为是没能理解原理方法的后果。

然后,求教了研二师兄LWJ,改用网络数据直接发送,中间可能不会经过操作系统出错的问题,毕竟他要比我有经验。然后他介绍了socket 编程,UDP数据包,还告诉我DE2的官网上有设计资源教程,在上面去学习,最后给我发送了一个编写UDP包的文档<基于ubuntu的[流汗]>,到18号再继续教我怎么发送数据包。但是后来搜索发现UDP包和socket编程的又要牵涉到TCP/IP的协议规则(不懂这些协议对于调试是很成问题的),然后就逐渐放弃了这种方式。这样就开始了另一种路径,“参看官方Demo示例,然后再进行改编”,昨晚上开始测试了官网上的web_server程序,然后今天开始测剩下的demo。

DE2_USB_API 演示面板控制FPGA的可供显示IO,包括 LEDR, LEDG, LCD, VGA, 7-SEG,SDRAM, Flash等
DE2_NIOS_DEVICE_LED 由于无法安装USB设备,所以这个demo在PC端无法进行控制。
My_First_NiosII 下载程序到Nios II 上,演示了闪烁LED的程序。
DE2_TOP 把FPGA上的所有IO口都利用了起来,作为开发模块的起始。
DE2_Synthesizer 有钢琴演奏程序,在VGA线上有视频输出,Line Out 上有音频输出。
DE2_i2sound 运行音频接收,录音和播放的过程,但是由于没有麦克风设备,没有测试结果。
DE2_Default FPGA测试我能测试到的所有输入输出设备。包括视频,LED,数码管及音频线路。
DE2_SD_Card_Audio 演示了从SD(FAT16)卡上读取wav文件,并通过Line Out 播放出去。
DE2_NET 在FPGA上进行网络数据包的接收,Packet。其说可以进行显示,但是我不知道是不是LED还是LCD或者是其它形式的展现。







官方在制作demo的时候,非常详细,除了功能描述(同上,不过是英文的)外,还有英文描述。

原本寄希望于DE2_NIOS_DEVICE_LED中能找到学习样例的,真让人惭愧,无法安装那个自己新建配置的USB Device口端的设备。后来在DE2_USB_API中,开始发现了一个特别好适合的情形,我可以通过PC客户端的应用程序ControlPanel.exe,就可以控制FPGA的数码管、LCD、LED和RAM以及VGA视频口等内容,就这样情有独钟的看上了她,将她作为模板学习。

在其头文件中发现了USB-JTAG module,其中有TDI,TDO引脚,在DE2_user_manual文档中并没有搜索到,但是在官方设计资源DE2_Pin_assignment.csv中查到了其为JTAG引脚,总共有5个,分别是

TDIPIN_B14TCSPIN_A14TCKPIN_D14TDOPIN_F14TD_RESETPIN_C4

然后这就是标准的JTAG通信了吗?既然JTAG信可以下载程序,那么发送接收命令也是可以的,而且用了JTAG下载线还可以省去网线,一举多得!然后就在中午的时候,开始搜索“JTAG FPGA 通信”。先选择了观看视频“第一讲虚拟JTAGFPGA通信原理-网络教室-AET电子技术应用网”开始接触到virtual JTAG的概念,然后换用了一个平台把所有的视频看完,结果发现这就是在上JTAG的知识普及课,对于具体的编程及工程应用,没讲得特别详细,所以没有寄希望于这套视频,后来发现博主在EDN的文章也没有具体到步骤化的程度。然后virtual JTAG再继续搜,“特权同学”和“Ripple”博客,就出现了。尝试了第一把项目日志4——AD调试(Virtual JTAG,配上自己的SW开关,通过测试!(小改其中的ByteBlaster为usb-blaster,参考博主coyoo的文章)既然PC可以接收数据,那么发送数据也应该可以做到,再结合其介绍的TCL工具,想必也不难,而且TCL还可以能跨平台进行界面设计。“特权同学”推荐了学习来源于ripple,所以就找到了原博主ripple在AET的个人主页

明天开始学习!

2015年7月15日11时59分32秒

 

0 0
原创粉丝点击