wxw-bgh / fpga_fibre_scan Goto Github PK
View Code? Open in Web Editor NEWThis project forked from takeshineshiro/fpga_fibre_scan
本信号处理板主要由FPGA芯片和CYUSB3.0 芯片组成,其中FPGA模块主要完成与相关外设的交互,CYUSB3.0主要完成协议数据的传输。 2.2.1 FPGA模块 处理流程: 1. 链路初始化: 在上位机完成USB固件的下载,并读取固件的信息状态描述后,通过上电复位或者手动复位,通过串口发送0X55给上位机,表明链路打通,一次握手成功。 2. 超声波发射与AD数据接收:在收到上位机通过串口发送的0X02指令后,开启(START),发送超声方波信号,(注:该START信号在处理过程被改变成包络信号)因为只是单阵元,所以就没有接收延迟聚焦的问题,但有皮肤表皮的客观实际和单阵元回波的时间消耗,所以在等到C_CORDIC_DELAY(1000)后,才开始AD数据的采集。(注:具体多少厚度,需要细算)。每次采集4096个数据,形成一个扫描线;总共需要采集300根扫描线,若不够,则需重新发送方波,并接收AD数据。 3. 剪切波发送: 在采集到第33根扫描线后,开始剪切波的发送,简单的发送50HZ的单载波就可以,此后的AD数据就含有剪切波的信息。 4. 控制通路的信息: 这里通过CYUSB3.0的串口来传送上位机发送的控制端口信息 ,包括数据通路的读和写指令(注:这里只需要通过BULK读取数据通路的数据,不需要通过BULK向数据通路写数据);通过CYUSB3.0的串口来传送下位机FPGA的状态信息指令给上位机。(由于采用的是URAT,所以有FIFO缓存和数据发送接收状态控制操作) 5. 数据通路的信息: 这里通过上位机的读写指令来将数据存储到FIFO中,这里默认发送的是0X00指令,一直读取AD采集到的数据。并且采用的是BULK的Xfer->read的同步传输,一直要等到指定数目数据(4096*300)采集完才结束采集。 2.2.2 USB3.0模块 1. 这里首先要进行存储划分和寄存器映射,一般汇编或者其他CMD格式,然后编写BOOTLOAD汇编,最后中断跳转处理(汇编)。 2. 这里主要配置GPIF的异步串口参数和读写操作。 3. 这里需要给出CTL端口和BULK端口的配置和读写。 2.3 上位机软件 这里主要完成算法的处理和界面的显示和控制。 关于算法部分需要后面补充,目前没有完全消化。 处理流程: 1. 初始化USB,然后上位机通过控制端点发送写命令控制字(不加帧头命令)下位机未处理,开启监视工作线程循环,主要内容是:通过控制端点发送读命令控制字,通过控制端点读回串口信息,用来验证设备是否启动握手成功(0X55)。 2. 启动成功后引发响应的启动触发方法。启动触发方法中,先要延时大于0.36s,如果选中check_box,则使用存储的测试数据,若未选中,通过控制端点发送写start命令,开启bulk端口读循环线程,最后每次测量发送一次读bulk数据消息到消息队列。 3. 在bulk端口读循环线程中引发响应的bulk读方法,在bulk读方法中,主要调用底层的USB3.0的bulkin读方法,数据读上来后,post一个getData消息,交由绑定的函数来处理数据。 4. 数据处理包括二独立部分,一部分是原始数据产生MotionMOdel信息 ,一部分是原始数据产生剪切波速度和杨氏模量信息。
License: Apache License 2.0