- 博客(35)
- 收藏
- 关注
原创 ADC9280数据采集(仿真及上板验证)
整个的实验流程为:DDS生成周期为256个点的数据流,每个点为8位宽 --> DAC采样 --> ADC采集 --> 加窗 --> FFT --> CORDIC做abs --> tb -->上板验证。
2025-04-03 10:47:09
206
原创 ADC-芯片AD9280
AD9280是ADI公司生产的一款ADC芯片、8位、32MSPS(每秒采样百万次)模数转换器,具有高性能、低功耗的特点。AD-DA典型应用:比如录音设备会将识别到的声音信号转为模拟电压,而模拟电压无法存储到内存中,需要adc转为数字信号(即0和1)才会转进内存中。最后想播放出来又需要DAC设备转为模拟信号再通过扬声器进行播放。ADC大致可以分为积分型、逐次比较性、并/串行比较型、Sigma_delta调制型、压频变换型。
2025-03-31 11:05:51
233
原创 裸机开发-GPIO外设
EMIO是PS与PL的接口,当PS引脚不够用的时候,可以使用EMIO来进行扩展,从而使用PL的IO;是ZYNQ PS端的一部分,将来自PS外设和静态存储器接口的访问多路复用到PS引脚上,直接连接到PS端的引脚,用于控制外设(如LED、按键等)。实验任务二:点灯大师(基于库函数)使用PS端的MIO控制两个LED,实现LED闪烁的效果,闪烁间隔为1s(和实验一逻辑是一样。
2025-03-14 11:37:03
596
原创 TMDS视频编解码算法
解码:使用xilinx原语serdes进行并转串,serdes分为master和slave模式,其中的master使用的是8bit数据,另外带两个bit的扩展位放在了slave中。
2025-02-24 21:00:18
331
原创 FPGA车牌识别
主要包含以下几个步骤:图像采集、颜色空间转换、边缘检测、形态学处理(腐蚀和膨胀)、特征值提取、模板匹配、结果显示。4.形态学处理:通过腐蚀和膨胀操作,去除图像中的噪点,并对检测到的车牌图像区域进行形态学处理。3.边缘检测:使用sobel算子对图像中的车牌和字符边界分别进行边缘检测。5.特征值提取:将图像划分为了8 x 5 = 40个区域,每个区域包含多个像素点,对每个区域进行求和,最后得出特定的特征值。6.模板匹配:将特征值与设定的统一字符模板进行匹配,找出最符合的字符。7.结果显示在LCD。
2025-01-08 21:28:55
2867
原创 RGB TO YCBCR
1.RGB565 to RGB 888,但会造成饱和度稍微强一些,用损失图像精度来换取资源消耗。4.延时3拍以同步数据信号,同步信号,输出图像到输入图像有3ns的延迟。2.同步输出数据接口信号,处理后的。3.加、乘、还原数据。
2024-12-27 17:24:42
152
原创 摄像头图像采集模块(代码+仿真时序)
主要是ov5640的图像采集,最终通过DDR3输出到LCD屏幕上,整个代码最重要的是8位数据转16位RGB565数据的拼接部分,要保证信号的同步控制,减少时钟域交叉。以及帧与帧之间等待10帧保证数据的稳定。
2024-12-26 13:35:31
218
原创 OV5640的配置模块
指的是在摄像头输出图像数据之前,从图像传感器读取的图像数据的水平起始偏移量。这个参数定义了图像数据在水平方向上的起始点,即从哪个像素开始输出图像数据。ov5640采集到的图像由3个步骤(几个寄存器共同确定)最终确定尺寸输出在LCD屏幕上。采集到的图像由fifo缓存DDR3传输最终输出到LCD屏幕上。以下代码中的具体配置参数都是参考ov5640的配置手册来定的。最终输出在LCD屏幕上的尺寸大小,比如800*480。配置摄像头的成像参数,
2024-12-25 16:51:18
269
原创 DDR3与MIG IP核(四)
3.在 DDR3 内存中,数据通常以突发(burst)方式传输。突发长度是 DDR3 控制器在不需要连续提供地址的情况下,可以连续读写的数据块的大小。例如,如果突发长度为8,那么 DDR3 控制器可以连续读写8个数据单元而不需要新的地址。实际上是用来计算每次数据传输(读或写)需要处理多少字节。等于16,意味着每次操作处理16字节的数据。
2024-12-25 16:34:29
176
原创 IIC驱动EEPROM
读数据的时候sda总线由输入变为输出状态,需要给从机一个非应答信号,不能给应答信号!enable 为0的时候 assign语句的输出为高阻,但是因为pullup了abc,所以abc的值为1。i2c_dri:主要是三段式状态机的编写。enable为1的时候 abc信号为0。
2024-12-24 15:10:03
764
原创 异步复位同步释放
因为复位信号在敏感列表中,所以虽然是非阻塞赋值,后面两个延时信号也能随着rst_n复位而立刻复位,同步释放从而降低亚稳态。读文章时读到的,以前没有注意过这个细节问题,
2024-12-12 17:41:56
220
原创 DDR3与MIG IP核(三)
app_addr调为十进制了可以发现地址是累加8的,这是因为用户端输入IP核的一个数据是128bit的,而IP核输入给DDR3的是16bit,而128 = 16 X 8,故写入到IP核的128bit的一个数据再从IP核到DDR3相当于写入了8个数据,所以写地址app_addr应该是加8。1:写数据app_wdf_data时序发生在写命令app_cmd和写地址app_addr之前。3:写数据app_wdf_data时序发生在写命令app_cmd和写地址app_addr之后。写数据时序图:(三种写数据的方式)
2024-12-02 21:29:50
311
原创 h.264基础解析
如我们所见,每个分片也包含着头和数据两部分,分片头中包含着分片类型、分片中的宏块类型、分片帧的数量以及对应的帧的设置和参数等信息,而分片数据中则是宏块,这里就是我们要找的存储像素数据的地方;而另外一个需要了解的概念就是 参数集(Parameter sets),参数集是携带解码参数的NAL单元,参数集对于正确解码是非常重要的,在一个有损耗的传输场景中,传输过程中比特列或包可能丢失或损坏,在这种网络环境下,参数集可以通过高质量的服务来发送,比如向前纠错机制或优先级机制。帧间编码信息数据块是不重要的一部分。
2024-12-02 14:47:04
1272
原创 MIG IP核详解(二)
当DDR3芯片是800M时,用户端是200M,FPGA往DDR3芯片里写/读数据,中间(双向箭头处)会产生一个带宽,用户端往MIG IP核读/写数据也会产生一个带宽,二者带宽是相等的。用户端DDR3因为是上下边沿同时采样,故DDR3的带宽为:800 X 2 X 16,16即DDR3的数据位宽为16位;用户端处的带宽为:200 X 数据位宽,数据位宽是指用户端从IP核里读/写数据的位宽。最终可得数据位宽为128。没有选择NO buffer,系统内部会自动产生一个IBUF,IBUF会让输入的信号更加稳定。
2024-11-27 16:10:16
621
原创 QPSK中信号对极化的解释
6. **实验验证**:在实验中,通过光子辅助的方法产生所需的毫米波信号,并通过极化复用技术实现信号的无线传输。例如,在W波段(75-110 GHz)的光无线-光纤集成系统中,通过极化多样性和异相拍频将极化复用信号的极化分量从光基带转换为W波段,从而实现高速无线信号传输。综上所述,信号对极化在QPSK中是指利用光波的两个正交极化状态来传输信息,通过极化复用技术提高数据传输速率,并在接收端进行相应的信号处理。2. **极化复用**:在极化复用中,每个极化状态(X和Y)可以独立地携带一个QPSK信号。
2024-11-01 15:24:04
235
原创 GPS用CN0而不是SNR来表示接收机解调出的卫星信号的强弱
例如,对于GPS C码,扩频码速率是1.023MBPS,而北斗B3 C码的扩频码速率是10.23MBPS,如果有人说GPS C码和北斗B3 C码两者的捕获灵敏度CN0都为30dBHz,那么我们可以说两者系统性能一样。如果有人说GPS C码和北斗B3 C码两者的捕获灵敏度SNR都为0dB,我们不能说两者性能相同,因为BD B3的带宽是GPS C码带宽的10倍,所以北斗的噪声功率远大于GPS,进而可知北斗性能更好(10log(10)=10dB)。好,噪声对信号的干扰小;其中, 表示信号功率, 表示噪声功率。
2024-10-29 10:47:40
1220
原创 initial
语句通常用于给寄存器(reg类型)赋初值,而不是用于线网(wire类型)。关键字用于初始化变量的值,它只在仿真开始时执行一次。语句来连续赋值,或者在模块实例化时通过端口连接来赋值。对于线网(wire类型)的信号,通常使用。在Verilog中,
2024-10-12 16:19:50
232
原创 串口UART接收
串口接收:串---->并空闲状态,rx为高电平,发送起始位的时候会置为低电平。假如采样起始位的时候,采到了低电平怎么办做法1:该数据直接舍弃,也就是不通知外界完成了一个数据的接收,不产生标志信号做法2:当成新的起始位来解做法3:当成正确的数据通知外部做法4:通知外界接收完成,但同时也输出一个错误标志信号,告知外界,此次接收的数据是错误的。
2024-09-30 15:19:47
468
原创 串口UART发送协议
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)是一种异步收发传输器,其在数据发送时将并行数据转换成串行数据来传输,在数据接收时将接收到的串行数据转换成并行数据,可以实现全双工传输和接收。它包括了 RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范。数据帧格式:起始位(1‘b0)+数据位(8bit)+校验位+停止位(1’b1)大多资料记在笔记本里,这里记一下实现代码。根据小梅哥教程和网上资料编写。
2024-09-27 11:27:00
210
原创 Linux下VCS与Verdi联合仿真(Verilog与VHDL混仿)
本篇简单介绍一下如何通过VCS与Verdi实现混合仿真VHDL+Verilog
2024-09-26 15:01:52
2919
原创 VHDL语法学习笔记
子类型是数据类型的一个子集,它提供了对原始数据类型的进一步约束或限制。子类型在VHDL编程中非常有用,因为它们允许程序员为特定的信号或变量指定更精确的类型,从而提高代码的可读性和可维护性。常用的非约束数组类型有:STRING是字符元素的集合,BIT_VECTOR是BIT的集合;是指向一个数据对象的部分可替代标识符,对这个标识符的操作相当于被替换数据对象的操作。这样的语句通常用于描述时钟边缘触发的逻辑,特别是在同步数字电路设计中。信号的任何变化,无论是从低到高(上升沿)还是从高到低(下降沿)。
2024-09-03 15:41:38
453
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人