- 博客(386)
- 资源 (1)
- 收藏
- 关注
原创 用tinyb210实现srsran小基站
使用tinyb210实现srsran小基站时要使用GPS信号,按照图1-1所示链接tinyb210,当插上GPS信号并且识别到信号时左边的LED一秒一闪,当GPS信号锁定时,中间的LED会常量如图1-1所示.前提条件是安装好srsran,在命令框中输入 srsepc_if_masq.sh wlp3s0(连接的网口名),将笔记本的无线网卡的端口与srsran绑定,不绑定将无法上网。输入ifconfig查看电脑连接的那个网口,并将网口复制下来,我们使用笔记本连接无线网,所以网口为wlp3s0.如图1-3所示。
2025-05-10 16:31:06
220
原创 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
198
原创 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
290
原创 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
798
原创 纯FPGA实现AD9361控制的思路和实现 UART实现AXI_MASTER
这里用一个串口接收PC机传过来的读写寄存器的控制指令,对地址地址的AXI_sLAVE进行读写后返回其结果。串口收发器用的代码还是经典的FPGA4FUN上的。这个代码还是实现了CHECKSUM校验。
2025-04-19 18:22:21
453
原创 纯FPGA控制AD9361的思路和实现之一 概述
这样实际操作的时候我们可以在PC电脑上运行ADI官方提供的DEMO程序,当需要通过AXI_LITE总线控制时候,就调用串口发送规定好的数据包实现对IP内部寄存器的读写。受限于串口速率,这里进行配置控制的速度确实慢了好多,但是好在配置不要求实时,并且数据流都在FPGA内部产生并消化,所以可以符合带宽和灵活性的要求。我们知道PS通过内存映射方式方式用户的IP,具体是将用户的逻辑做成AXI_LITE_SALVE外设,PS做为AXI_LITE_MASTER去控制。比如下图【上截图】。
2025-04-19 18:08:12
297
原创 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
307
原创 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
404
原创 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
365
原创 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
496
原创 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
584
原创 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
739
原创 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
749
原创 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
947
原创 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
953
原创 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
203
原创 TQSDRPI开发板教程:使用openwifi接入互联网
在openwifi的教程中,可以使用手机连上SDRPI发出的wifi,但是其只能访问内部做好的网页,或局域网中的内容,无法连接互联网,本期历程实现使用openwifi的网络访问互联网。完成上述的设置后开启WiFi,使用的命令与上一节中的相同,开启WiFi后使用手机连接,打开百度查看是否可以访问。如下图所示,左侧为接入外网显示的详细,右边为未接入外网的详细。将openwifi的启动卡插入SDRPI,SD卡中的内容无需修改,启动模式设置为SD卡启动,插入串口和网线(j14),网线另一端插入路由器。
2025-03-31 13:33:01
434
原创 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
151
原创 使用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
212
原创 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
171
原创 MAX2871频率计算以及配置程序
在之前的一个项目中用到了MAX2871这个频率综合芯片,我从GITHUB上找资料参考一个项目(链接稍晚我找找补充上来)做了一个频率计算软件可以在PC上运行,运行后产生寄存器配置命令,这些配置命令数组拷贝到单片机C代码文件里,单片机产生时序对MAX2871进行配置。左边实现了单端转差分。给参考频率到MAX2871。先给出项目,后面由时间再一起分析总结一下。下面截图是原理图部分。
2025-03-07 06:47:02
234
原创 设计一个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
162
原创 设计一个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
440
原创 设计一个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
407
原创 设计一个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
362
原创 使用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
455
原创 在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
549
1
原创 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
319
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
313
原创 二进制转成HEX的小工具
多用于早期的单片机程序文件。我使用openocd往STM32里烧写程序的时候需要用到.hex的文件。我之前做过BIN文件转HEX文件的工具,我记得当时基于51单片的C编译器SDCC这个项目里面的开源代码,至少是十几年前的事了吧。最近十年内就是做过将BIN转成MCS文件,以便被ISE的IMPACT识别SPARTAN3下载。我们看到使用时候需要输入三个参数: 第一个是输入文件 第二个是输出文件 第三个是起始地址。可以看到16进制表示的地址是被接受的。我下载下来没有修改一行代码,直接用dev_cpp编译过了。
2025-02-05 06:45:27
478
原创 提供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
419
原创 提供一种刷新X410内部EMMC存储器的方法
2,如果EMMC损坏无法进入LINUX系统,按照官方的说明,将USB-OTG和调试口的TYPEC接口都接入电脑,可以使用JTAG模式下载并运行U-BOOT,输入指令使X410的内部EMMC存储器映射成一个移动硬盘,之后将映像烧写到这个影射的盘里。无论第一种方法还是第二种方法,我们都是直接EMMC的扇区进行写,不同是第一种是X410进行写,而第二种是外接的用户电脑进行写。连续发送512的数据包,我在这个回调函数里面收到第一个发送过来的512字节的包,周都是1024的包,是两个包组合在一起发送了。
2025-01-23 06:57:32
830
原创 X410启动过程串口的显示
接口下面标注有CONSOLEJTAG,其实就是USB口转了2个CONSOLE串口两个JTAG。一串口一个JTAG给STM32,另外一个JTAG和串口给了RFSOC。这里显示的是COM14,COM15,不同电脑可能会显示不同串口号。分别打开看确认是STM32的串口还是RFSOC的串口。两个串口,一个是RFSOC芯片的串口另外一个是STM32的串口,可以通过设备管理器查看其串口号。PWR灯黄色标识休眠,需要按下另外一面的开关按钮,显示绿色才能开启。这个BLOG记录一下X410开机上电的串口显示。
2025-01-18 09:15:58
489
原创 TQRFSOC开发板47DR :EMMC和SD卡扇区读写
由于本例程需要使用扇区的方式读写SD卡,打乱其中的文件格式,所以使用JTAG在线运行的方式实验本历程,将开发板的启动模式设置为JTAG模式,插入SD卡,JTAG接口和电源。本例程实现读取EMMC和SD卡的扇区,RFSOC开发板的SD卡引脚绑定在PS端,而EMMC硬件引脚绑定在PL端,所以需要将EMMC的引脚绑定到EMIO,并且添加对应的引脚约束文件。打开hello_world项目,打开设计文件-->打开zynq配置-->添加SD0的配置,设置为EMIO,eMMC,8bit。设置完成后点击OK保存配置。
2025-01-16 17:17:03
953
原创 ZC706的10G光口中TX_DISABLE的控制
在光口座子上的的第3脚,此脚为1时候关闭TX发射,为0时候允许发射。因此我们要保证此脚为1,此脚又是被MOS管控制的,此MOS管子实际是反相器,所以我们要保证SFP0_TX_DISABLE和SFP1_TX_DISABLE为0.很多顾客没有注意到对TX_DISABLE的控制,导致光口发射部分没有正常功能工作。
2024-12-30 10:40:16
424
原创 ZC706开发板教程:使用SD卡启动工具烧写flash
为实现工具化,我们将读取加写入flash的项目,生成BOOT.BIN文件实现SD卡启动的模式,程序启动后再读取SD卡中指定的文件,将其烧写到flash中。到此我们只需要将启动文件以及要烧写的文件复制到SD卡中,SD卡启动后等待读取与烧写操作。为了方便更换读取的文件,我们可以将BOOT.BIN复制到SD卡中,需要烧写flash时就从SD读取指定文件,再烧写进去。本期将为您提供解决方案,以简化这一流程。我们分析正常的flash烧写过程,就是通过JTAG将启动文件"BOOT.BIN",烧写到FLASH芯片中。
2024-12-27 20:03:46
497
原创 如何查看vivado项目所使用的版本
在使用不同版本的Vivado打开项目时,可能会出现错误,因此建议使用对应版本。本文主要演示如何查看项目所用的Vivado版本。以Vivado 2023.1版本的项目为例,项目中只有一个“.xpr”文件。右键点击该文件选择“打开方式”,然后用记事本等应用程序打开。打开后,在第二行可以找到“Product Version: Vivado v2023.1 (64-bit)”的信息,从而确认项目使用的Vivado版本。此方法适用于查看所有Vivado项目的版本信息。
2024-12-23 18:17:20
504
原创 实现四线风扇控制的verilog代码之二:转速计数
看看参数FRQ是clk的频率。这样的好处是计数的时间长度根据风扇转速适当设置,比如我现在这个风扇最高速度时每秒采集到大约550个上升边缘,这样我可以设置DIV_SECOND是5,这样每次200ms在最高速度时就可以统计110个上升边缘,这样获取转速范围就是0-110,也就说可以获取转速110个档,这是足够的,此时刷新时间是200ms。DIV_SECOND是这里要权衡的一个参数。fb接4线风扇的黄线经过必要的保护电路的输出,可能需要上拉,这里输出的占空比1:1的脉冲,是否反相都不影响我们统计频率。
2024-12-20 00:17:16
359
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人