自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 网络传输知识入门

终于有人把SDH、MSTP、OTN和PTN的关系解释清楚了…… (baidu.com)

2023-09-28 15:42:41 125

原创 GTHip核说明

GTH说明

2022-08-26 11:53:07 3198 1

原创 HDMI PL驱动开发记录

HDMI FPGA 驱动

2022-06-30 14:17:14 632 1

原创 vivado DDR4读写存储以及一些坑

DDR4读写demo,vivado

2022-06-22 11:25:03 2014

转载 hdmi1.4协议

(3条消息) HDMI 1.4 协议_StephenZhou-CSDN博客_hdmi1.4

2022-02-16 11:37:05 508

翻译 异步FIFO的设计

本文首先对异步 FIFO 设计的重点难点进行分析最后给出详细代码一、FIFO简单讲解FIFO的本质是RAM, 先进先出重要参数:fifo深度(简单来说就是需要存多少个数据) fifo位宽(每个数据的位宽)FIFO有同步和异步两种,同步即读写时钟相同,异步即读写时钟不相同同步FIFO用的少,可以作为数据缓存异步FIFO可以解决跨时钟域的问题,在应用时需根据实际情况考虑好fifo深度即可本次要设计一个异步FIFO,深度为8,位宽也是8.代码是学习...

2022-01-06 16:40:27 3119 3

原创 各类图像加速算法汇总

1.sobel算子(verilog)`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2021/11/20 15:33:31// Design Name: // Module Name: x// Project Name: /...

2022-01-05 15:04:44 726

原创 利用帧差法,实现目标追踪

TASK1: 读入两帧图像()(需要灰度化)TASK2:绝对值之差(成像)TASK3:添加矩形框

2021-12-28 22:22:54 1925

原创 (附代码)利用AXI_DMA进行批量数据发送到PS(测试篇)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结一、Zynq的GPIO概述简单的理解,MIO 是 PS 系统原生的,和 PL 没啥关系;但是 EMIO 是 PS 借 PL 的引脚用,所以它们就有千丝万缕的关系,PL 的工程里面势必要做点什么。MIO 在 PS 系统里面分配好对应的信号功能后,在 PL 的代码里面就不需要写任何的逻辑,甚至引脚分配都...

2021-12-28 18:33:51 1834 1

原创 将480*640rgb888彩色图像转为rgb444彩色图像并制作coe文件(matlab)

先上网搜一幅图像,通过画图软件将其变为480*640大小,将其保存为24rgb.bmp文件。将matlab路径迁移到.bmp文件夹下。随后运行脚本。脚本文件如下:img = imread('tar.bmp');%分离通道r = img(:,:,1);g = img(:,:,2);b = img(:,:,3);%修改位宽r = uint32(r);g = uint32(g);b = uint32(b);%降维 2维降到1维r = reshape(r',307200,1);%此

2021-12-27 20:48:02 4018 1

原创 verilog150个经典例子仿真及电路图

1.4位全加器 代码:module module_full_add( input [3:0] iv_a,iv_b, input is_cin, output [3:0] owv_sum, output ows_cout ); assign {ows_cout,owv_sum} = iv_a+iv_b+is_cin;endmodule RTL: Simulation:2...

2021-12-26 21:19:43 13727 3

原创 shell脚本学习笔记

一、什么是shell shell是c编写的程序,是用户和linux内核沟通饿桥梁,命令解释二、shell功能 *命令行解释功能*启动程序 *输入输出重定向 *管道连接 *文件名置换(echo /*) *变量维护 *环境维护 *shell编程三、shell语法shell脚本就是将完成一个任务的所有的指令按照执行的先手顺序,自上而下...

2021-12-22 21:06:30 1411

原创 基于zynq7000的SDSOC的yolo人脸识别(环境篇)

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:一、SDSOC简介以及其与zynq的关系二、环境的搭建三、SD卡的分盘四、启动SDSOC五.

2021-12-16 22:25:44 4016 5

原创 C语言学习笔记

1.地址传递与指针传递 student{ string name; int age; int score;}值传递void printstudent(student s){ cout <<"姓名"<<s.name<<"年龄"<<s.age<<"分数"<<score<<end1;}...

2021-12-11 19:42:45 940

原创 基于verilog实现DDR3存储图像数据,问题,以及解决方案

问题一:在实现DDR3写的时候出现了,数据与地址沿没有对齐的问题,如下图所示。可看图中的蓝色与黄色光标,很明显在地址为0的时候,没有写数。解决办法: case(state) IDLE: begin if( rd_en_fifo1_in & rs_wr_enable)//write_data_2_mig begin orv_cmd <= 3'b0; orv_addr <= 29'h1fff_fff8;

2021-12-10 18:29:47 2053

原创 vivado中testbench的一些技巧

自己工程中用到的一些testbench的代码,以后方便copy直接使用,节省开发时间。一、做数据处理时,数据流的产生有限数据流的产生。 integer i; reg [15:0] st[1:100]; initial begin $readmemh("G:/zz/data.txt",st); i=0; s_axis_tdada1=0; repeat(100) begin ...

2021-12-10 14:31:11 1980

原创 基于数字电路设计的再次理解(随笔)

用verilog写代码的时候一定要做到:心中有电路,代码有电路。至于想要做到心中无电路,代码无电路,那就是玄学了。再者,做FPGA一定要设计当头,做FPGA设计或者是ASIC设计的最重要的就是设计。写代码不要光always,这样很浪费逻辑资源。寄存器多了,面积必然大,功耗也会大。不符合ic设计理念。写verilog之前不光要做到心中有电路,还要做到心中有时序图。一个设计方案,不仅心中要有数,而且要写下来。再动手写代码之前,心中也有个普。正确设计流程应该是确定设计模块的要求,划分硬件结构。同时

2021-12-08 14:01:45 235

原创 基于VIVADO MIG核配置,以及读写的完成(附代码讲解)

一、DDR3用户端见如图是中间部分是我们MIG核,它分为,左边的用户接口与右边的DDR3接口,vivado给我们提供了便利的MIG核,我们只需要通过配置用户端的接口,就可以直接控制DDR3了。MIG核的配置,网上一大堆,在这里,我就挑几个需要重点理解选项。在应用一个模块之前,我们首先要了解这个模块的时钟树。从上图中,我们可以得到 CLOCK PERIOD(clk1)、INPUT CLOCK PERIOD(clk2)、SYStem clock、PHY to c...

2021-12-07 19:43:37 5837 3

原创 DDR3的一些基本知识

一、关于DDRDDR3全名Double Data Rata SDRAM,目前已经更新到第六代,但是第五代与第六代还没在市场上营销。市面上以DDR3以及DDR3居多(目前本人用的VC709是DDR3),DDR的前身是SDRAM,最大的不同在于前者是差分,后者是单端。其他DDR的迭代主要是传输速率,工作电压,功耗等不同。二、一些基本参数的理解DDR3知识大全 - CNZHIQIANG - 博客园c此文章对于DDR3的基本知识有一个很好的理解作用,其中包括了一些关键参数读写时序,如tRCD,CL,

2021-12-03 19:49:33 1534

原创 基于VC709开发板的光纤收发的调试与实现,以及过程中遇到的问题与解决。

VC709是xilinx旗下的一款开发板,搭载了强大的Virtex-7芯片。有着丰富存储资源,时钟资源与高速接口。具体可参考xilinx官网的ug887手册,本次主要是想记录一下自己的学习过程与遇到的困难。一、利用IBERT核实现回环测试。具体的实现流程可参考知乎文章:在开始高速接口前,我们来试试IBERT测试吧! - 知乎下面讲讲自己遇到的困难与最终解决方案。这里设置的设置没什么好说的,注意一点就是,参考时钟决定了你的线速度,因为板子上的参考时钟是固定的(也可以通过外时钟的接入或者可.

2021-11-17 19:20:53 3759 4

原创 基于网口的GPS实时授时的16路AD采集卡

本项目是基于在原有的16路AD采集卡的系统之上,加入GPS实时的授时系统。将FPGA接收卫星信号的时间戳,插入到AD数据中,从而产生带有实时时间戳的ad数据。基本原理是FPGA模块通过uart串口模块,接收来自卫星发送的tod信号,提取tod信号的有效字节作为大秒(既时分秒、日月年),通过10Mclk时钟计数来产生小秒,理论上最小精度可达100ns具体看来自卫星的时钟。具体实现过程,通过调用uart串口,接收卫星信号发送的格林威治时间,通过计数器筛选有用信号(一共35B,有效数据只有12B)

2021-10-27 20:17:50 756

原创 FPGA的时序的一些忠告

忠告一、如果时序差的不多,在 1NS 以内,可以通过修改综合,布局布线选项来搞定,如果差的多,就得动代码。忠告二、看下时序报告,挑一个时序最紧的路径,仔细看看是什么原因导致,先看逻辑级数是多少?是哪种电路有问题,乘法器 或者还是 RAM 接口数据 先弄清楚哪儿的问题忠告三、搞时序优化的话 插入寄存器是王道 但也要看具体情况 不一定都得插寄存器,插入寄存器效果不明显的话,先检查一下寄存器插入的位置,如果寄存器不是在关键路径的中间插入而是在某一端的话,确实不大明显忠告四、把关键路径找出来,看时序报告,看是

2021-09-29 16:23:01 723

原创 FPGA时序学习笔记之一

模块的扇出是指模块的直属下层模块的个数。一般认为,设计得好的系统平均扇出是 3 或 4。一个模块的扇出数过大或过小都不理想,过大比过小更严重。一般认为扇出的上限不超过 7。扇出过大意味着管理模块过于复杂,需要控制和协调过多的下级。解决的办法是适当增加中间层次。一个模块的扇入是指有多少个上级模块调用它。扇入越大,表示该模块被更多的上级模块共享。设计得好的系统,上层模块有较高的扇出,下层模块有较高的扇入。其结构图像清真寺的塔,上面尖,中间宽,下面小。静态时序分析的前提就是设计者先提出要求,然后时序分析工

2021-09-29 16:21:45 628

原创 关于FPGA时序问题的一些学习之路

FPGA时序是FPGA设计过程中一个非常重要的环节,他基本上决定了系统稳定性与鲁棒性。FPGA时序既与其自带的内部器件有一定的关系,同时也与逻辑编程有一定的关系。在此我们可以先了解两个名词 及STA(静态时序分析) 以及SDC文件,这两个名词,前者是高速我们逻辑代码的时序如何,后者则是去改善前者,使其时序逻辑变得较好。一般时序的设计流程如下,综合(Synthesize)>在TimeQuest TA里添加时序要求(约束)> 在工程中使能(及调用)TimeQuest TA>布局布线(F

2021-09-28 21:45:47 503

原创 关于FPGA开发中,对于非逻辑毛刺的解决问题

前文中,我们介绍了毛刺的一种解决方案。此毛刺是通过两个信号的与造成的,可以通过打拍子解决。笔者最近遇到了一个由于硬件电路产生的问题,通过打拍子无法解决,于是可以通过计数器来过滤掉毛刺。具体的操作方式如下:reg [3:0]io1;reg [7:0]cnt1,cnt2,cnt3,cnt4;always@(posedge clk or negedge rst_n)if(!rst_n)begin io1[0] <= 1'b1; cnt1 <= 8'b0;endelse...

2021-09-28 16:26:51 408

原创 FPGA代码中的信号优化问题

(笔者使用的是QuartusII 的SignalTap II Logic Analyzer)在使用开发软件逻辑分析仪的时候,软件为了节约内存。有时候会自动优化一些信号,使得这些信号变得不可见,通过以下方式可以得到一些解决。解决这个问题首先要了解一下扇入扇出问题。网上的解释很多,但是个人认为扇入就是指定义的reg类型寄存器作为输入,扇出就是作为reg类型的寄存器作输出。若这个信号没有作为输出,则称为零扇出,若这个信号没有作为输入,则称为这个信号作为零扇入。从这个理解角度,我们可以:1. 如果是组合

2021-09-25 16:58:39 807

原创 quartus II逻辑分析仪的使用

quartus II逻辑分析仪在逻辑调试中有很大的作用,可以帮助开发人员抓住很多示波器无法获取的中间寄存器信号。具体使用方法点击tools》signaltap II logic analyzer打开界面如图首先点击右上角的hardware 选择USB接口 接着点击 Scan Chain 扫描下载器JTAG接口 预置Clock,尽量选择大的时钟,这样可以看到更多的信号,选择 sample depth的深度,深度越高,可以看到的波形越多。但是选择的时候,Medium的值不可超过阈值。随后双击中间..

2021-09-15 13:26:56 5099

原创 关于verilog中的毛刺产生问题。

verilog中,产生毛刺是一个常见的现象。目前发现的一种毛刺产生的原因,是由于上升沿与下降沿的与操作,使得系统产生了毛刺,如下:reg [3:0]acountreg sclk;always(posedge clk)if(!rst_n )begin acount <= 4'b0; sclk <= 1'b0;endif(acount == 4'd10)begin sclk <= ~sclk; ...

2021-08-17 11:14:56 2821

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除