- 博客(393)
- 资源 (1)
- 收藏
- 关注
原创 使用Icarus verilog仿真
仿真文件要加入这两段代码其意义是将仿真波形加入到tb_decoder3_8.vcd文件中,文件名称可以自定义,第二段是记录测试tb_decoder3_8.vcd文件中所有信号的变化。将安装包下载后,会有两个版本,x86是32位系统,而x64是64位系统,跟为根据你电脑的配置自行选择安装,因为我的电脑是64位所以我选择x64。在重新打开一个cmd终端,先进入代码存放目录,输入指令gtkwave tb_decoder3_8.vcd ,后面加上.vcd的文件名称,就可以打开GTKWave。Win+R输入cmd。
2025-08-07 16:02:33
273
原创 TQTT_KU5P开发板教程---百G网口PING测试与抓包
本文介绍了基于XCKU5P FPGA的100G光口UDP协议测试过程。通过配置FPGA(IP:192.168.1.2)与主机网卡(IP:192.168.1.10)进行ping测试,验证了网络连通性。使用Wireshark抓包工具捕获通信数据,确认FPGA的MAC地址(40123456789)与设计一致。测试过程包括bit文件烧录、光纤连接、网络配置及抓包分析,完整验证了100G光口的数据传输功能。
2025-08-07 09:36:06
226
原创 QD9361开发板教程:基于MIG IP的PL端DDR3测试
因为我们的开发板使用的是MT41K256M16RE-125,所以此处选择800MHZ,选择DDR类型,我们选择MT41K256M16XX-125,DDR3的数据位宽,根据原理图得到,一般是QDxx,最大数值加一,我们选择32。FPGA Options配置页面,系统时钟的来源,根据原理图选择差分信号(Differential),将参考时钟选择使用系统时钟(Use System Clock),系统复位低有效。直到创建完成,出现此界面,勾选Global然后点击Generate,之后就等待IP创建完成。
2025-08-01 10:14:37
618
原创 QD9361开发板教程:基于zynq的PS端的DDR3测试
进入DDR configuration界面,选择DDR型号:MT41K256M16 RE-125,直接OK其他选项默认。首先创建一个工程,然后选择芯片XC7Z100ffg900-2,创建完成后建立一个块设计工程,在点OK。将IP核的时钟连接一起,点击Run Block Automation,它将会自动的将端口引出去。右键刚刚建立的块设计,选择Generate Output Products,点击加号,在搜索栏中输入zynq,在双击选择IP。右键DDR3 --> Run As -->选择1。
2025-08-01 10:00:17
279
原创 MATLAB 2025a的下载以及安装,安装X310的测试附加功能(附加安装包)
C:\Program Files\MATLAB\R2025a\bin\win64,可以右键matlab图标,打开文件所在位置,进入win64文件夹,将netapi32.dll文件复制到win64目录下,必须使用管理员身份,之后既可以直接使用matlab了。首先将安装包下载到本地中之后解压该文件夹,打开文件发现有两个文件,其中crach文件夹中是破解matlab所用到的文件。在安装之前将网络断开,不然可能破解不成功,先进入网络设置界面,之后点击更改适配器。打开解压好的文件夹,右键此文件然后以管理员方式运行,
2025-07-31 13:13:07
374
原创 TQZC706开发板教程:创建PCIE项目
本文介绍了在Vivado中使用zc706开发板创建PCIe项目的完整流程。通过添加XDMA IP核,完成Basic、PCIe ID、PCIe BARs等关键配置,生成bit文件后配合boot_gen工具制作启动镜像。重点强调了硬件连接注意事项:主机需完全关机后插入板卡,706板卡电源开关需关闭。最终通过lspci命令成功识别到Xilinx设备,验证了PCIe通信功能。文章提供了完整的配置参数截图和现成项目文件,便于开发者快速验证实现。
2025-07-25 20:00:52
388
原创 TQZC706开发板教程:10G光口ibert测试
本文介绍了在ZC706开发板上使用iBERT核测试10G光口的完整流程。主要步骤包括:查看原理图确认光口位置和TX_DISABLE信号控制方式,设置CDCM6208时钟源(SW5设为10011),创建iBERT项目并配置参数(10Gbps速率、bank111光口、bank112时钟)。通过修改顶层文件和引脚约束,生成bit文件后下载到JTAG模式下的开发板。使用光纤自环测试可查看通道参数和眼图效果(本测试因采用简易连接方式效果欠佳),并提供了项目文件的网盘下载链接。
2025-07-24 18:49:46
341
原创 用tinyb210实现srsran小基站
本文介绍了使用TinyB210实现srsRAN小基站测试的两种方法。实验在Ubuntu系统下进行,第一种方法需依赖GPSDO时钟同步:通过连接GPS天线,运行同步脚本后绑定网口,启动基站服务即可实现手机上网功能。第二种方法通过修改enb.conf配置文件(删除第71行GPSDO相关配置),使系统无需GPS锁定也能运行srsRAN。文中详细展示了基站配置流程,包括GPS信号识别、网口绑定、服务启动等关键步骤,并提供了完整的配置文件内容供参考。两种方案均验证了TinyB210搭建srsRAN基站的可行性。
2025-05-10 16:31:06
581
原创 ZC706开发板教程:windows下编译ADRV9009
编译完成后生成BOOT.BIN可以使用我们提供的工具,进入file文件夹,双击运行makeboot.bat脚本文件,此脚本文件会将生成BOOT.BIN所需的文件拷贝到当前文件夹,并使用这些文件生成BOOT.BIN全自动更新,运行成功界面如下所示。如下图所示打开后可以看到两个项目,demo项目为ADRV9009的PS端项目,主函数入口在headless.c中。开启电源,主机中串口会识别两个,都需要打开,串口输出内容从其中一个输出,串口比特率为115200,打印内容如下所示。生成BOOT.BIN工具运行截图。
2025-05-08 17:38:56
356
原创 TQTT_KU5P开发板教程---HDMI接口显示测试1024X768
设置完IP核之后,参考《程序的烧写与固化》,将程序工程固化到开发板上,之后连接开发板,将HDMI接口连接上如图8-5所示。打开项目工程之后双击打开代码 --> 代码的3-9行为你可以选择的显示像素,本次教程所使用的像素为1024x768_60HZ_65MHz,如图8-1所示,勾选两个输出时钟 --> out1输出65MHZ,out2输出650MHZ,之后直接点击OK,IP核设置完成,如图8-4所示。之后双击IP核,修改IP核内容,此处调用的是一个时钟IP,如图8-2所示。图8-1 选择像素区域。
2025-04-22 15:41:50
331
原创 Tinyb210上手手册
将我们所提供的项目在linux系统下的gnuradio打开,将项目2tx-2g复制到linux系统下,之后打开的gnuradio,选择打开文件将存放项目的文件夹。1,TYPE C类型的USB3.0接口,支持正反插,使用支持USB3.0的高速线,并插在电脑的USB3.0接口上,否则可能被是被成USB2.0模式,传输速率降低很多。这时板子上会由两个绿色的led灯亮起来,在led旁边的就是输入端口,并于信号发生器连接如图1-9所示,将信号发生器分别与这两个接口连接。连接tinyb210,与双发连接一样。
2025-04-21 13:59:33
1357
原创 纯FPGA实现AD9361控制的思路和实现 UART实现AXI_MASTER
这里用一个串口接收PC机传过来的读写寄存器的控制指令,对地址地址的AXI_sLAVE进行读写后返回其结果。串口收发器用的代码还是经典的FPGA4FUN上的。这个代码还是实现了CHECKSUM校验。
2025-04-19 18:22:21
530
原创 纯FPGA控制AD9361的思路和实现之一 概述
这样实际操作的时候我们可以在PC电脑上运行ADI官方提供的DEMO程序,当需要通过AXI_LITE总线控制时候,就调用串口发送规定好的数据包实现对IP内部寄存器的读写。受限于串口速率,这里进行配置控制的速度确实慢了好多,但是好在配置不要求实时,并且数据流都在FPGA内部产生并消化,所以可以符合带宽和灵活性的要求。我们知道PS通过内存映射方式方式用户的IP,具体是将用户的逻辑做成AXI_LITE_SALVE外设,PS做为AXI_LITE_MASTER去控制。比如下图【上截图】。
2025-04-19 18:08:12
409
原创 TQTT_KU5P开发板教程---HDMI接口显示测试640X480
设置完IP核之后,参考《程序的烧写与固化》,将程序工程固化到开发板上,之后连接开发板,将HDMI接口连接上如图8-5所示。打开项目工程之后双击打开代码 --> 代码的3-9行为你可以选择的显示像素,本次教程所使用的像素为640x480_60HZ_25HZ,如图8-1所示,勾选两个输出时钟 --> out1输出25MHZ,out输出250MHZ,之后直接点击欧克,IP核设置完成,如图8-4所示。,用于HDMI的输出串行数据编码。之后双击IP核,修改IP核内容,此处调用的是一个时钟IP,如图8-2所示。
2025-04-17 15:58:16
341
原创 TQTT_KU5P开发板教程---千兆以太网传输测试
双击IPv4 --> 勾选使用下面IP地址 --> 输入192.168.5.201(这个地址必须和开发板的IP地址处于同一个网关192.168.5这三处必须一样但是第四处不能与开发板的IP地址相同) --> 在子网掩码的空白处单击一下,就会出现 --> 点击确定就可以了,如图7-5所示。等待比特流烧写完成后,使用win + r打开窗口 --> 输入cmd -->点击确定 ,如图7-7所示。修改电脑的网口IP地址,先在设置中找到以太网选项 --> 点击更改适配器,如图7-3所示。图7-4 修改电脑IP地址。
2025-04-17 11:55:33
464
原创 TQ15EG开发板教程:AD9361观测adc采集波形
同样在mian.c文件中可以看到一些AD9361的配置,如下图所示,可以看到收发频率在2.4G,所以后面测试时需要准备一个信号发生器,产生2.4G的频率。本例程的一些操作都是建立在前一个例程的基础上进行的,请尽量阅读完第前一个例程。打开vivado项目中的设计文件,添加观测使用的ila,开启4路输出,每一路都是32位,连接adc_fifo模块的输出,具体连接如下图所示。通过本例程的学习,我们可以实现使用AD9361使用ILA抓取ADC采集到的波形图,熟悉AD9361项目,以及AD9361的一些基本配置。
2025-04-12 11:34:42
474
原创 TQTT_KU5P开发板教程---DDR4基于IP核 SDRAM(MIG)的测试
进入重新打开的vivado,双击打开顶层文件 --> 将103,104行代码注释掉并加入一个2位宽的输出信号led --> 再将代码表6-1添加到顶层文件,如图6-7所示(此段代码的作用是当DDR4成功运行时led1点亮,当DDR4出现错误时led0点亮)进入IP核配置界面后,将输入时钟改为100MHZ --> 将cas latency 改为19 --> 芯片型号:MT40A256M16GE-075E --> 数据位宽位32位 --> 直接点击OK,其余界面不需要配置。
2025-04-09 17:41:32
633
原创 TQTT_KU5P开发板教程---高速收发器之XDMA实现PCIE
插入开发板后将电脑开机,使用快捷键ctrl + alt + T 打开一个窗口 --> 输入 lspci | grep X --> 点击回车键,如图5-14所示。等创建好项目之后双击IP catalog --> 输入xdma --> 双击DMA/Bridge.....,打开IP核配置界面,如图5-1所示。将宽度选择X4 --> 速率勾选8.0GT/s --> 切换到下一个配置页面,如图5-2所示。(拔插开发板的时候,电脑必须关机,不可以带电拔插!此页不做修改直接切换到下一个页面,如图5-5所示。
2025-04-09 17:19:29
704
原创 TQTT_KU5P开发板教程---QSFP25G光口回环测试
将QUAD_225的Protocol Selected修改为Custom 1/10 Gbps --> 将Refclk Selection改为MGTREDFCLK1_225由原理图得到 --> 切换到时钟设置,如图4-7所示。先点IP Catalog 打开IP搜索框 --> 在搜索框中输入ibert --> 双击IBERT Ultrascale GTY ,如图4-1所示。完成后会出现此界面图4-15,点击Serial I/O Links --> 点击Auto-detect links,如图4-16所示。
2025-04-09 14:59:12
818
原创 TQTT_KU5P开发板教程---QSFP10G光口回环测试
将QUAD_225的Protocol Selected修改为Custom 1/10 Gbps --> 将Refclk Selection改为MGTREDFCLK1_225由原理图得到 --> 切换到时钟设置,如图3-7所示。修改LineRate数值为10G --> 将Refclk的频率修改为156.25MHZ --> 点Advanced Settings 切换到高级设置 ,如图3-3所示。选中IP核,右击鼠标打开菜单 --> 打开Open IP Example Design,如图3-11所示。
2025-04-09 11:54:34
831
原创 TQTT_KU5P开发板教程---文件的烧写与程序固化
我们所使用的芯片型号为mt25qu256-spi-x1_x2_x4.本次实验采用的在led_shift项目的基础上将流水灯程序固化到flash芯片上,当再次上电时,FPGA直接在flash芯片上读取程序运行。而我们使用的mt25qu256的Quad-SPI FLASH芯片他有256Mb的内存已经超出官方所给的2倍,所以以经足够FPGA使用。我们通过在官方网站上查数据手册查出该芯片的位流长度为123449056bits,官方给出的最小flash的配置内存为128Mb,如图2-1所示。
2025-04-09 11:35:44
1058
原创 TQTT_KU5P开发板教程---实现流水灯
本文档是学习本开发板的基础,通过设置计数器使led0到led7依次闪烁,让用户初步认识vivado基本的开发流程以及熟悉项目的创建。本开发板的所有教程所使用的软件都是vivado2024.1版本的。可以根据网上的教程下载与安装。硬件资源此次教程使用了8个LED灯,如图1-1所示图1-1 LED实物图由原理图可知,此开发板的LED灯为高电平点亮,如图1-2所示图1-2 LED原理图创建项目工程首先打开软件,如图1-3所示图1-3。
2025-04-09 11:05:14
1033
原创 TQSDRPI开发板教程:使用SD卡工具烧写flash
烧写成功后确保环境没问题即可修改flash烧写的文件。本例程烧写的flash的文件为“2_SDRPI_HelloWorld”项目中生成的BOOT.BIN,将其改名为“qflash.bin”,4:将启动模式设置为flash卡启动,重新上电或复位,等待done灯亮表示flash烧写成功并验证。烧写流程入上所示,若烧写失败可以打开串口查看打印内容,如下所示为第二步运行时串口打印的内容。本例程使用一个简单的方式烧写SDRPI的flsh,首先按照步骤进行如下测试。2:将开发板的启动模式设置为SD卡模式并上电启动。
2025-04-09 10:23:29
257
原创 TQSDRPI开发板教程:使用openwifi接入互联网
在openwifi的教程中,可以使用手机连上SDRPI发出的wifi,但是其只能访问内部做好的网页,或局域网中的内容,无法连接互联网,本期历程实现使用openwifi的网络访问互联网。完成上述的设置后开启WiFi,使用的命令与上一节中的相同,开启WiFi后使用手机连接,打开百度查看是否可以访问。如下图所示,左侧为接入外网显示的详细,右边为未接入外网的详细。将openwifi的启动卡插入SDRPI,SD卡中的内容无需修改,启动模式设置为SD卡启动,插入串口和网线(j14),网线另一端插入路由器。
2025-03-31 13:33:01
504
原创 TCA6416的控制代码
这里最终对外的函数就只有set_tca6416和get_tca6416这两个,其中参数p代表port,取值范围是0或1,b代表bit位,取值范围是0-7。另外一个I2C物理总线上可以接2路TCA6416,使用时候要通过地址线分开,此时可以给这两个函数再加一个参数数进行区分。除了这三个必须寄存器之外,TCA6416还提供了一个极性转换的寄存器,我们不管这个寄存器,让它保持默认数值就可以。下面是我写的代码,这里用的I2C接口也是我们上个BLOG提供的接口。一路是方向,控制是输入还是输出。
2025-03-09 11:39:14
211
原创 使用IO控制的I2C控制C代码
根据我的经验在对I2C器件进行读写的时候一定要调用i2c_CheckDevice这个函数确保I2C器件存在并且处于READY状态。我们在板子设计的时候用的最多的I2C当属24系列的EEPROM存储器件。是使用集成的I2C控制器,我们也是在程序中循环等待(轮询)执行完毕,所以这组纯C实现的就不存在速度上的劣势。使用这代码时候时候可以修改一下i2c_Delay函数,达到适当的延迟数值,一般而言对于常见的I2C器件,SCL一般在10几K的频率就行,主要是没有必要太大,低点能稳定一些。
2025-03-09 10:36:37
276
原创 STC和STM32单片机器中控制GPIO的函数
使用单片机我们用到最多的就是GPIO,很多设计甚至只使用GPIO就可以。我的一些板子用来控制上电序列或者某些芯片基本配置(比如频率综合器,I2C的电源芯片等)一般用STC单片机,上位复杂点的用STM用单片机,这里我总结了STC的GPIO操作函数,一直在项目中使用,这里分享给大家。下面的是STM32的GPIO配置代码,由于在OPEN_DRAIN模式在接I2C或者18B20等双向接口的器件中也有用到,因此函数中设置了对OPEN_DRAIN模式的支持,代表里面的参数或者函数名od就是。
2025-03-07 07:05:43
211
原创 MAX2871频率计算以及配置程序
在之前的一个项目中用到了MAX2871这个频率综合芯片,我从GITHUB上找资料参考一个项目(链接稍晚我找找补充上来)做了一个频率计算软件可以在PC上运行,运行后产生寄存器配置命令,这些配置命令数组拷贝到单片机C代码文件里,单片机产生时序对MAX2871进行配置。左边实现了单端转差分。给参考频率到MAX2871。先给出项目,后面由时间再一起分析总结一下。下面截图是原理图部分。
2025-03-07 06:47:02
344
原创 设计一个SVF下载器之四:SVF解析和操作实现
1,SDR指令如果有MASK和TDO就是要检查一下MASK为1的位,从器件读回来的TDO和SVF的SDR指令TDO后面的括号内16进制的结果是否一样,不一样就不要往下走了,就认为是出错了,比如IDCODE读回来后发现根器件不对应,或者某个标志位没有其作用。2,RUNTEST指令实际是延迟指令,单位是TCK周期数,我们根据SVF给出的FREQUNCY数算出多少个微妙,之后调用DelayUS函数。SVF是格式比较简单固定的文本文件,我们基本的方法是从文件中取一行,如果是注释就忽略,如果是我们支持的命令就执行。
2025-03-07 05:49:02
214
原创 设计一个SVF下载器之三:JTAG的TAP状态机的控制实现
JTAG_reset实现JATG的TAP状态机无论在什么状态都经过TEST_LOGIC_RESET状态后到达SELSECT_DR_SCAN状态。其实在操作SVF实现编程时最多的操作就是数据的移出,如果修改上述JTAG_Access并修改JTAG_clock去掉里面都相关内容,会有明显的提速。有了上述进行状态转移以及移动位的函数,我们可以很轻松实现SVF中的操作。JTAG_clock(TMS),JTAG_clock(TDI),JTAG_clock(TMS|TDO),JTAG_clock(0),其中。
2025-03-07 05:18:31
574
原创 设计一个SVF下载器之二:最低性价比的USB串口转并口的实现
上篇BLOG中提到我们使用ZC706板子实现USB串口转成JTAG接口所需要的四根信号线,通过PMOD引出。国产的天嵌通途TQZC706上面使用的使用了一片CP2105来实现USB转串口:CP2015有能实现USB转成2路串口,在电脑上同时显示两个串口号。TQZC706上将这两个串口分别接给了PS和PL。我们只看PL这个串口,找到了接在W23和AJ25引脚上。
2025-03-05 19:41:07
451
原创 设计一个SVF下载器之一:整体思路
这四根线我们暂且不考虑速度,可以是四根并口线,其中TDI,TMS,TCK是控制器输出给CPLD或者FPGA的JTAG接口线,TDO是CPLD或者FPGA输出给控制器的数据线。其中指令的周期由文件开头的FREQUENCY指定,一般为10M的样子。关于JTAG的TAP状态机,在【注释1】这里有详细的介绍,我就是通过这个网站入门JTAG并在2010年做出了龙芯仿真用的EJTAG。这样我们的这个下载器的基本工作变成了解析SVF文件之后对JTAG的TAP状态机进行操作实现对IR和DR的读写(其中IR仅写)。
2025-03-05 18:58:22
403
原创 使用Fat文件系统的方式读写SD卡和EMMC
编译后重新生成BOOT文件运行测试文件,注意此项目会格式化SD卡,请备份好SD卡中的重要文件。取下SD卡插入读卡器,连接电脑,查看里面的内容,如下所示,只有一个Test.bin文件,测试成功。TQRFSOC开发板的EMMC硬件连接在PL端,可以使用EMIO的方式挂在SP端,SD卡使用硬件连接在PS端。创建完成后打开.spr文件-->打开BSP文件-->修改BSP设置-->勾选xilffs-->完成配置。其次需要将创建的文件名称修改为"1:/Test.bin",默认不加路径的情况下文件路径选择的是驱动号0。
2025-03-03 10:31:27
597
原创 在MPSOC上运行ADRV9026射频子板
解压提供文件压缩包“adrv9026.zip”,解压后有三个文件夹,首先是“hdl-2023_R2”为vivado端的项目,里面有各种射频子板加不同底板的项目,本例程使用的是ZCU102的项目修改出来的。此项目是我们已经修改完成并编译完成,打开bd文件,本项目的设计如下图所示。压缩包中的“boot_gen”文件夹为生成BOOT.BIN文件的工具,将前两步生成的“system_top.bit”文件与“adrv902x.elf”文件复制到目录“boot_gen\MPSOC”中,注意不要修改文件名称。
2025-02-24 15:55:26
717
2
原创 X310发射高带宽信号测试
将本例程提供的文件“lfm_samples.dat”复制到搭建好X310环境的Ubuntu系统中,这是一个录制的波形,我们使用UHD工具将其发射出去。通过本例程我们知道了可以使用“rfnoc_replay_samples_from_file”工具发送波形文件,结合使用X310设备发射高带宽信号,并通过频谱仪观察和分析信号性能。完成上述的三条命令后,X310开始就开始发射射频信号,默认情况下使用的是RF A通道,所以需要将RF A通道的发射口连接到频谱仪。将SPAN设置为200M,波形如下所示。
2025-02-21 09:12:19
442
1
原创 .MCS文件和.HEX的区别以及生成.MCS的代码
这里注意包含了一个很简洁的生成hex的代码。有一个开源的51单片机的C编译器叫做SDCC,里面有一段生成.HEX的代码。当然这代码使用“穷举”的方法,如果MCS文件可以再添加或者根据HEX的02开头协议改成更智能的。.MCS文件我们说的是XILINX的烧写文件,他是在.HEX的基础上发展而来的。我们看到每行16个字节(两个ASCII码表达一个字节),每隔4096行,也就是整整65536字节就会出现一次起始地址信息。.HEX是早起的INTEL提出的烧写文件的格式,由于历史原因只支持到64K的长度。
2025-02-05 07:12:21
417
原创 二进制转成HEX的小工具
多用于早期的单片机程序文件。我使用openocd往STM32里烧写程序的时候需要用到.hex的文件。我之前做过BIN文件转HEX文件的工具,我记得当时基于51单片的C编译器SDCC这个项目里面的开源代码,至少是十几年前的事了吧。最近十年内就是做过将BIN转成MCS文件,以便被ISE的IMPACT识别SPARTAN3下载。我们看到使用时候需要输入三个参数: 第一个是输入文件 第二个是输出文件 第三个是起始地址。可以看到16进制表示的地址是被接受的。我下载下来没有修改一行代码,直接用dev_cpp编译过了。
2025-02-05 06:45:27
622
原创 提供ZYNQ,MPSOC,RFSOC生成BOOT.BIN的小工具
bootgen -image output_rfsoc.bif -arch zynqmp -o temp/BOOT.bin -w on 是根据output_rfsoc.bif这个文件的指示生成zynqmp架构的boot.bin 存在temp目录里面,-w on是警告设置为开。使用时候准备好FSBL,用户APP,PL的比特流这个三个文件,修改.bif文件指示这三个文件。copy temp\boot.bn I:\ 这里是拷贝到SD卡,你的SD卡接在读卡器上接在电脑上,看盘符是多少从而修改I:.\。
2025-01-27 15:31:49
496
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人