- 博客(31)
- 资源 (16)
- 问答 (1)
- 收藏
- 关注

原创 FPGA上实现ADC电压电流数据采集、本地数据编码及SD卡存储、千兆以太网及4G远程通讯系统设计及具体实现(已硬件验证)
包含硬件PCB设计和FPGA的Verilog代码的编写,下图为主要功能框图。FPGA作为并行处理单元,实现了电流和电压的采集、千兆以太网通讯、SD卡本地存储和串口通讯等。已经打PCB实际验证和Verilog代码在硬件上的实际测试,测试部分包含:千兆网通讯收发测试、AD采集的数据验证、SD卡存储验证、RTC实时时钟读取和RTC的RAM突发读取等。PCB设计采用的是AD软件,Verilog程序通过quartus II软件编写。现由硬件和软件两个方面简单介绍。一、硬件设计下图分别为硬件的正面和反面,纯手工焊
2021-02-06 13:32:56
9088
20

原创 基于RTL8211E的千兆以太网收发verilog程序(已经硬件验证,初学=语法注释较多)
软件平台quartus 13.1硬件芯片 Atera,Cyclone IV EP4CE30F23C8千兆PHY芯片:RTL8211E话不多数,直接附上部分源码,有需要的点击链接下载:
2020-11-08 20:44:04
3558
7

原创 FPGA仿锆石代码风格组合电路时序电路严格分开之(一)8通道16位AD采集
硬件介绍:FPGA采用的是黑金的AX530,AD采集模块采用的是AN706(八通道十六位)。实现功能:AD采集到8通道十六位的电压数据,然后经过串口发送到串口助手显示各个通道的实时电压数据。程序源码介绍:顶层模块包含AD采集模块(AD_RX_module),AD数据转换模块(AD_Volt),AD数据到串口数据转换模块(AD_to_Uart),串口发送模块(Uart_tx_Module)。以下将分模块介绍:1、顶层程序AD_8C_16B:没有什么要说的,就是把底层模块中出现的输入输出脚连接起来。
2020-07-24 09:41:00
1226
原创 多级IIR滤波效果(BIQUAD),system verilog验证
Matlab生成6阶对应的3级系数biquad,然后编写system verilog代码实现3级biquad滤波,并通过波形观察滤波效果。
2024-12-04 17:05:55
457
原创 System Verilog通过CORDIC算法迭代16次求sin和cos值
参考:https://blog.youkuaiyun.com/Pieces_thinking/article/details/83512820。其它角度和Verilog实现代码类似。求0~90度的sin和cos值。
2024-05-08 18:37:07
453
原创 FLASH中sector、block、page的区别和联系
在某些情况下,块的大小可能根据擦除方式的不同而有所变化,比如,一个块可以是32KB,也可以是64KB。每个页在物理上都有自己的地址范围,通过页地址和页内偏移地址,可以唯一地标识存储器中的每个字节或位。综上所述,sector、block和page在FLASH中分别代表了不同级别的数据单元和逻辑分区,它们在大小和功能上都有所不同,以适应不同的数据存储和操作需求。在FLASH存储介质中,sector(扇区)、block(块)和page(页)是三个重要的概念,它们代表了不同级别的逻辑分区或数据单元。
2024-04-23 16:08:22
2686
原创 Cache的替换策略LRU和一致性协议
当一个新的数据项需要被加入到缓存中时,如果缓存已满,LRU算法会找到链表中最久未使用的节点(即链表头部的节点),将其从链表中移除,并将新的数据项添加到链表的尾部。在这些场景中,LRU算法能够有效地利用有限的缓存空间,提高缓存命中率,从而减少访问主存的次数,提升系统性能。在多级存储体系结构中,由于缓存和主存之间的数据复制和更新操作可能导致数据不一致的问题,因此需要一致性协议来确保数据的一致性。如果缓存中的数据与主存中的数据不一致(即缓存脏),则可能需要从主存中重新加载数据到缓存中。
2024-04-12 18:02:04
673
原创 典型的HyperFLASH读取终端配置寄存器的命令流概述
如果你的HyperFLASH设备有多个配置寄存器,并且你需要通过地址来选择特定的寄存器,那么这一步就是必要的。这个命令可能是一个特定的命令码,后跟一些参数(如果有的话),这些参数可能包括地址、数据长度或其他控制信息。你需要确保你的接口能够正确接收这些数据,并可能需要进行一些错误检查(如CRC校验)来确保数据的完整性。在某些情况下,你可能需要发送一个关闭或结束命令来告诉设备你已经完成了当前的操作序列。在发送读取命令和地址(如果需要)之后,你需要等待HyperFLASH设备的响应。
2024-04-08 18:16:36
286
原创 HyperBus协议--HyperFLASH中Program Suspend 功能的理解
功能概述:• Program Suspend 功能允许主机在闪存编程或擦除过程中,通过发送特定的命令序列来暂停当前的操作。• 这对于需要处理实时事件或执行其他高优先级任务的系统来说非常有用,因为它允许在不完全中断闪存操作的情况下,暂时将焦点转移到其他任务上。工作原理:• 当主机决定暂停闪存操作时,它会向 HyperFLASH 设备发送一个 Program Suspend 命令。• HyperFLASH 设备接收到该命令后,会立即停止当前的编程或擦除操作,并进入一个低功耗的暂停状态。• 在暂停状
2024-04-08 09:29:02
393
原创 HyperBus协议不会明确告诉你的事
6、HyperFLASH读的时候,initial delay和Read Initial Access time要求不一致,前者大于后者?Tacc是HyperFLASH将数据从存储区移动到data IO的时间。1、HyperRAM mem space通常需要initial delay,HyperFlash和HyperRAM reg space通常不需要 initial delay。2、HyperRAM的地址低4位是0到f,在DQ传输时地址是0到7,因为DQ一个地址包含2个Bytes。
2024-04-03 09:30:04
734
原创 HyperBus中的两种突发传输方式,即Linear Burst(线性突发)和Wrapped Burst(回绕突发)
在实际应用中,需要根据硬件平台、系统架构以及应用需求来选择合适的突发传输方式,以实现高效的数据传输和性能优化。在这种模式下,数据传输同样从指定的起始地址开始,但当达到某个预设的边界或限制时,地址会回绕到指定的起始地址或某个固定的起始点,并继续传输。Linear Burst模式下,数据传输从指定的起始地址开始,并连续进行,直到达到指定的突发长度或遇到边界限制。HyperBus中的两种突发传输方式,即Linear Burst(线性突发)和Wrapped Burst(回绕突发),是两种用于连续数据传输的机制。
2024-03-25 17:07:36
946
原创 system Verilog:clocking中定义信号为input和output的区别
例如,即使a在clocking块中被定义为output,它仍然可能在测试平台的其他部分被定义为从DUT读取的输入。在波形上,会看到a信号的变化与DUT中的实际变化同步,并在clk的上升沿(posedge)处被采样。在波形上,会看到a信号的变化是由测试平台驱动的,并且这些变化将在clk的上升沿处同步到DUT。最后,为了完全理解a在波形上的行为,还需要查看其在测试平台和DUT中的完整描述,以及它们如何交互。对于output的情况,a的波形将由测试平台控制,并且这些变化将同步到DUT的输入。
2024-03-20 11:05:30
773
原创 $setuphold<setup>(posedge CK:105446753233 ps,posedge D:105446753066 ps,17.1:171PS,-12.6:-126PS);含义解释
(posedge CK:105446753233 ps, posedge D:105446753066 ps): 这部分指定了触发检查的事件和它们的时间。当 D 的上升沿发生在 105446753066 ps,并且随后 CK 的上升沿发生在 105446753233 ps 时,本指令将检查这两个信号之间的 setup 和 hold 时间。$setuphold: 这是指令的名称,用于执行 setup 和 hold 时间检查。D 相对于 CK 的上升沿的 setup 时间是否大于或等于 17.1 ns。
2024-03-11 16:08:25
2112
1
原创 IC中SVN常用命令记录
2、使用svn merge命令回滚到指定版本。例如,svn merge -r 2106:2105,将回滚到版本号2105。1、svn查看文件修改记录命令:svn log <文件路径>3、使用svn diff命令查看回滚后的文件差异。
2024-02-27 16:41:08
141
原创 异步处理部分容易出现X态的原因
2、DFF、gating cell等由于setup/hold不满足,或者rst信号的recovery/removal不满足,或者异步逻辑同步的第一拍DFF,产生X态。3、仿真环境或者平台原因,模型或者整chip顶层PIN脚的信号没有驱动,是高阻Z态,进入数字逻辑内部变成X态。4、仿真pattern自身原因,比如程序使用了未初始化(写)的存储区,读出X态的数据并使用,导致X态传播。1、信号的电平宽度比这个cell的门延时还短,信号经过这个cell后的输出是X态。
2024-02-01 17:00:53
350
原创 Perl语言中的/^\d+$/怎么理解?
KaTeX parse error: Undefined control sequence: \d at position 6: 表示行尾。/ 这个正则表达式就是匹配一整行是否全是数字。用来匹配位置:^表示行首,\̲d̲表示数字,即0-9。
2024-01-08 19:50:50
547
原创 当arlen为0或arsize为0的传输意思
/ 读传输burst size为1个字节。// 读取到的数据为0xABCD。// 读传输长度为1个数据。// 读传输响应为正常。// 读传输响应为正常。// AXI读传输响应示例。// AXI读传输响应示例。
2023-12-29 16:32:23
703
原创 本质立即断言 a’(1’b1)和AReady’(Ready)
在System Verilog中,a’(1’b1)和AReady’(Ready)是基于模拟事件的语法。它们用于测试表达式的求值,并且在过程块中立即被求值。这些语法的本质是立即断言,用于验证特定条件是否满足。AReady’(Ready):这个语法用于测试信号AReady是否与信号Ready的值相等。如果相等,断言就会通过。a’(1’b1):这个语法用于测试信号a是否在当前时间步骤上升到高电平。这些语法可以在System Verilog的过程块中使用,用于动态模拟和验证设计的正确性。
2023-12-27 10:51:15
451
原创 数字IC验证随笔(更新ing)
1.无论digital input\output,还是analog input\output信号都要从pad进出。3.Pinmux及数字对gpio的配置,最终都是体现在模拟处的PAD位置。2.PAD虽然不是芯片物理上的IO,但可以理解为仿真中芯片的IO。
2023-11-10 14:16:27
231
原创 Quartus II如何选中一列,然后删除复制等。
Vivado选中一列可以用ctrl+shift+鼠标。Quartus II选中一列可以用ctrl+alt或者直接alt+鼠标,可以用于删除选中增添一列。
2021-07-19 20:48:39
1556
原创 FPGA突发模式读写DS1302并发送到串口显示
FPGA:EP4CE30E22C8N实时时钟:DS1302实现功能:按键1按下一次,以突发模式写入一次初始化日期和时间。按键2按下一次,突发读取一次DS1302中的日期和时间,并通过串口发送到上位机串口助手显示。Verilog代码主要分为4个模块,RTL图如下和模块例化如下,主要包含DS1302模块,按键控制模块,串口通讯模块和DS1302数据向串口模块间的数据准备。//----------------------------------------------------------------
2020-12-24 15:32:35
1302
2
原创 基于4G网络的图像传输、处理、显示和监控系统(LabVIEW上位机)
是几年前做比赛的时候做的一个监控系统,当时做这个图像传输的确花费了很多时间,开发软件是LabVIEW,现在分享出源码希望可以帮助到需要的人。主要功能包括:简单的图像处理、显示,TCP/IP协议通讯,各种监控指标,图像的放大缩小存储等。接下来简单分模块介绍一下,首先上一个前面板界面(这个界面经过了一个学弟的简单修改了,原来的找不到了,但是风格和空间基本没变)。TCP/IP协议部分如下,这部分非常简单,但是一定要注意数据的协议,侦听比较简单,读取数据时注意数据量和模式选择。之后是图像数据的处理和显示
2020-12-04 12:04:27
3597
2
原创 用FPGA实现正负数开方、平方、乘法、除法、取余等数学运算并signaltap硬件仿真成功
用FPGA实现正负数开方、平方、乘法、除法、取余等数学运算并signaltap硬件仿真成功主要通过软件可以综合的数学运算和IP核实现一、先定义了参数,有正有负。matlab计算结果是35,Signaltap计算结果也是35二、数学公式如下:计算方案:参数设置:S_x_110000 = 0.099110000=991S_y_110000 = -0.107610000=-1076S_z_1 10000= -0.223110000=-2231S_x_2 10000= 0.115010000=11
2020-11-09 16:17:45
3513
原创 FPGA行为级描述代码(严格区分组合逻辑和时序逻辑) 持续更新中
写在前面:近两个月开始接触FPGA,硬件采用的是黑金的AX530,但是其代码风格我觉得并不是很好,而且注释也比较乱。所以,虽然我用的硬件是黑金的,但是程序我更偏向于锆石的代码风格,也就是行为级描述的时候比较严格的通过组合电路和时序电路共同实现数据的赋值和判断等操作。这样的好处呢,代码比较清楚易懂,逻辑感觉更加清晰一些。我写这个博客的意义在于延续一下我认为比较好的代码风格,因为锆石貌似已经不再更新一些资料了,有一些硬件的操作,锆石的资料里并没有,所以我会按照其风格在本博客中更新一些锆石没有的硬件的一些操作的
2020-07-24 09:42:00
540
原创 LabVIEW文件存储路径自适应系统时间
功能描述,根据程序所在位置拆分路径,然后按照当前的系统时间,命名所要存储的数据,保证了上位机等通讯接收到的数据反复命名的困扰,已经写成了子VI,直接调用这个程序,只需要引入需要存储的数据,就会自动保存txt文件到exe程序所在的位置了。源码下载链接:https://download.youkuaiyun.com/download/qq_39521541/12628483...
2020-07-20 18:49:29
981
原创 用Verilog实现BCD编码
众所周知,FPGA在计算乘法除法的时候比较慢,所以当需要把一个数,例如52020这个数按照个十百千万发送出去的时候,在单片机或者其他软硬件中,可以直接取余得到每一位数据,然后存储起来发送到上位机或者别的地方。但是FPGA每一取余操作,所以需要通过BCD编码通过移位的方式实现个十百千万的取出,然后发送。而BCD译码通常通过左移加三法,我在做8个通道的16位AD采集的时候,需要把采集到的8个字节一次的发送到上位机,所以就编写了一个verilog代码来实现左移加三法,主要采用了组合逻辑中的for循环16次实现BC
2020-07-18 20:15:39
2132
原创 自己写的LabVIEW的串口助手
可以实现串口协议的修改,命令的发送和接收,同时可以清空接收数据显示区和保存接收到的数据位txt文件,文件路径自适应为当前的系统时间,路径为当前的程序路径。同时可以显示GPS信息(如果传输了GPS数据的话)。包含子陀螺仪的数据、编码器的数据、和编码器算出来的XY左边,这是曾经做的一个工程,用于定位和显示。程序采用模块化编码,包括数据包的拆包转换子vi,字节到16位或者32位数据转换子vi,存储路径自适应子vi等。可以根据自己的需要修改解包子VI就可以图形化显示正确的数据了。非常方便用于工程测试和比赛的.
2020-07-17 11:05:59
1640
原创 正点原子中的usart和mpu6050联系的探究
正点原子中的usart和mpu6050联系的探究我发现mpu6050例程中,必须要有usart.h否则函数编译虽然不报错,但是程序执行不了。为什么我这么说嗯,我对我做的尝试做如下的说明。我是针对正点原子的MPU6050战舰版例程进行的测试。1、remove左边SYSTEM文件夹下的usart文件,见图1,当然也移除了usmart文件夹(此实验中没有实际用处)2、屏蔽掉LCD中用到串口1的地方(主要就是打印LCD型号的地方),见图2.1和2.23、屏蔽掉所有用到usart.h的子文件,如图3中上面的四
2020-06-02 11:43:00
711
基于fpga的千兆以太网通讯、数据采集、存储显示等-PCB源文件-AD软件.rar
2021-02-06
基于FPGA的AD7606采集-Micro SD存储-千兆网通讯-4G传输源码.rar
2021-02-06
通道切换和编码策略对多通道ADC系统中THD的影响
2025-01-11
优快云资源被下载没有积分?
2024-07-15
sverilog语法soft在verdi中可以识别吗
2022-08-22
fpga用verilog读写SD卡,无系统
2021-03-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人