自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 Xilinx中shift_ram IP核使用注意事项

Xilinx中shift_ram IP核使用注意事项在工程中,使用了两个shift_ram的IP核,用于计算滑动平均值,但可能是由于数据位宽较大的原因,在使用过程中总是偶尔出现移位前后的数据不一致。移位寄存器位宽为42bit,深度为3,移位周期为3个时钟周期,开始时出现过数据输出与输入不匹配,后将时钟周期放长,数据还是偶尔出现不匹配现象。可能是由于一次移位的bit太多导致吧。但在使用该ip核做3*3的矩阵运算时,由于每次计算的...

2021-08-16 11:55:49 1185

原创 能ping通ip但无法ping通域名和localhost //ping: bad address 'www.baidu.com'

错误描述:~ # ping localhostping: bad address 'localhost'原因,在/etc目录下缺少hosts文件,将linux中的/etc hosts文件拷入即可~ # ping localhostPING localhost (127.0.0.1): 56 data bytes64 bytes from 127.0.0.1: seq=0 ttl=64...

2019-05-29 11:31:53 9885

转载 CRC校验码原理及自动生成源码

自动生成网址:https://www.easics.com/webtools/crctool

2019-05-05 15:20:31 5361 1

原创 Quartus调用Modelsim仿真出现(vlog-2155) Global declarations are illegal in Verilog 2001 syntax.错误解决方法

错误提示:(vlog-2155) Global declarations are illegal in Verilog 2001 syntax.报错语句解决方法:联合仿真所读取的文件都是绝对目录下,即使工程文件和所要读取的和应用文件在同目录下也要加上绝对路径标识。加了绝对路径之后仿真没有再报错。...

2019-04-26 14:08:53 4755

原创 verilog中二维数组的定义与应用

定义:FPGA中的二维数组其实并不是真正意义上的数组,而是由多个寄存器组成的ROM或者RAM定义一个深度为100,宽度32的ROM/RAM 数组,即有100组宽度为32的寄存器reg [31:0] memory [0:99] ; //前面[31:0]表示位宽,memory 是此存储的名字,[0:99]表示0到99共100个组//当要调用其中的一组数据的特定部分,可以使用 存储名 ...

2019-04-25 16:33:59 38120 3

原创 SCCB协议介绍与应用和OV7670摄像头的寄存器配置

SCCB协议简介:以OV7670的配置传输为例OV770中,8‘h42是写操作ID,8’h43是读地址从数据传输时序可以看出,其传输的顺序是: 开始位,数据[7:0] ,X位,其中X位为任意,手册中给出的解释是don’t care开始传输时序:SIO_D在SIO_C为高时由高到低表示开始传输。即: SIO_C == 1 时,检测到SIO_D的下降沿就表示数据开始传输。当SI...

2019-04-19 10:07:04 5309

原创 FPGA的串口通讯(UART)

协议简介:UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。其中每一位(Bit)的意义如下:起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇...

2019-04-15 16:58:57 27503 3

原创 利用FIFO模拟UDP包文的发送

部分信号列表:input [15:0] dest_port ; //目的端口input [15:0] sour_port ; //源端口input [31:0] dest_ip ; //目的IP地址input [31:0] sour_ip ; //源IP地址in...

2019-04-12 18:02:44 649

原创 FIFO加包文,切割包文

一、模块没收到一个包文时,先发送一个开始包文,再发送数据包文,最后发送结束包文。输入的包文是32bit,而输出的包文格式要求为8bit开始包文格式如下:8’h558’'h558’h558’hd58’hd5pack_id数据包文格式与上游输入的包文一致结束包文格式如下:8’h558’'h558’h558’hfd8’hfdpack_id注:...

2019-04-12 14:30:35 574

原创 FIFO的加头数据练习

一、在数据FIFO前加数据个数包文此处是输入一个完整包文后才输出如何在FIFO的前面加上表示其个数的包文,使用计数器计数,将其值存储到信息FIFO中。在发送的时候,先发送数据个数的包文,之后再发送数据FIFO,那么怎么选择发送的是数据还是计数的数据。此时就需要有一个状态信号,标识是发送数据还是发送计数的数据。//计数器always @(posedge clk or negedge rst...

2019-04-11 14:10:00 434 1

原创 FIFO数据的溢出丢弃

FIFO溢出:所谓溢出,指达到FIFO最大存储数之后或者是有可能存不下下一条数据或者包文时,需要根据需要对存入不了的部分进行处理,可以丢弃,也可以通过乒乓操作保存,此处主要讲丢弃。案例一:包文长度在50~200之间,FIFO最大存1000个长度的包文,要求FIFO不溢出,可以丢弃溢出部分的包文,可以多丢,但是一定要保证包文的完整性。分析:因为要保证包文的完整性,所以只能在写侧进行丢弃,因为溢...

2019-04-11 10:10:43 7460

原创 FIFO的发送条件总结

一、当FIFO存储的数据等于水线cfg_thd时,数据输出,此时的读使能为:assign rd_en = rdusedw >= cfg_thd && empty == 0;//无论何时,读的第一条件是empty == 0,即FIFO不为空二、状态切换,即不仅存在启动水线,也同时存在停止水线要求: 当FIFO中存储的数据大于等于启动水线时发送数据,即发送状...

2019-04-09 15:00:29 3120 1

原创 FIFO读写侧位数不同的处理

由于很多时候存入FIFO与需要读出的数据位数并不一致,所以需要对齐进行处理。可以分为两种情况:一、写侧位数少于读侧例:din : [7:0] ;dout:[15:0];显然,输入与输出不匹配,此时有两个方法可以进行位拼接,一个方法是FIFO的位宽依旧为8Bit,在写侧进行数据的拼接,代码如下://读侧设置一个计数器,读两次,输出一次always@(posedge clk or ne...

2019-04-02 18:04:35 9086 7

原创 数据FIFO的读写和信息FIFO的基本使用方法

数据FIFO 一、写使能-wr_en,写数据-wdata//din :8bitassign wr_en = din_vld ;//din_vld 为数据有效指示信号assign wdata = {din_sop,din_eop,din};//如果是包文形式,可以将sop和eop写入数据FIFO的数据中,可以保证起始和结束条件与数据始终同步注意:此刻的写使能和写数据...

2019-04-02 16:12:07 10301 1

原创 FIFO设计中的注意问题与技巧

FIFO:先入先出,无地址

2019-03-01 10:05:04 2329

原创 高斯滤波的FPGA实现

高斯滤波:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。高斯滤波(Gauss filter)实质上是一种信号的...

2019-02-25 16:28:53 7285 2

转载 verilog中的parameter和localparam的区别

parameter : 全局参数定义,可在整个设计中传递参数localparam :仅限于当前模块的参数定义,跨模块不可用。顶层例化: mem #(.DATA_WIDTH(DATA_WIDTH), .ADDR_WIDTH(6)) u1 ( .clka (adc_clk), .wea (adc_wr), .addra (adc_waddr), ...

2019-01-04 14:39:57 5452

转载 generae 在Verilog中的使用

Verilog-2001之generate语句的用法Verilog-1995 支持通过以声明实例数组的形式对primitive和module进行复制结构建模。而在Verilog-2001里,新增加的generate语句拓展了这种用法(其思想来源于VHDL语言)。除了允许复制产生primitive和module的多个实例化,同时也可以复制产生多个net、reg、parameter、assign、a...

2018-12-26 14:58:01 1685

转载 基于FPGA的RGB565_YCbCr_Gray的实现

原文链接:http://www.cnblogs.com/ninghechuan/p/7403725.html将彩色图像转换成灰度图像有两种方式:一、 令RGB三个分量的数值相等,输出后就可得到灰度图像。二、转化为YCbCr格式,将Y分量提取出来。YCbCr格式中的Y分量表示的是图像的亮度和浓度,所以只输出Y分量,得到的图像即为灰度图像。因为所配置的摄像头采集数据是RGB565格式,所以将其先...

2018-12-14 17:00:43 1169

原创 xilinx shift register and Altera shift register

Xilinx shift register一、器件手册二、产生IP核此为一行数据,若要多行,直接实例化即可。Altera shift register一、原理二、应用产生IP核步骤如下图所示:...

2018-12-13 10:25:03 1716

原创 Error (suppressible): (vsim-3009) [TSCALE] - Module 'h2a_tb' does not have a timeunit/timeprecision

今天在Modelsim仿真时发生的错误报告,原因是没有按照测试文件的要求写*** timerscale***之后在测试文件添加了timerscale就解决了。由于之前是直接使用ISE生成测试文件故在Modelsim编写测试文件时忘记了这个问题。...

2018-11-28 11:10:12 6173

原创 FPGA设计心得

1. 分析整体模块首先你需要知道这个工程需要干什么,它想实现一个什么功能?实现这些功能需要哪些触发条件?推荐写个设计文档。文档不需要太复杂,简单记录一下I/O口,将整个工程合理的划分为几个小的模块去设计就会容易很多。2.划分为各个子模块无论多么复杂的工程,都是由很多小模块一步步连接起来实现的。将每个子模块功能划分清楚,例如做串口通讯时,将串口发送模块与串口接收模块分开为两个子模块,这样不仅每...

2018-11-22 10:05:43 2516

原创 ERROR:HDLCompiler:718 - "D:\ISE\DATA_TR\tranform8_4\channel_16.v" Line 65: Port connections cannot b

错误描述:ERROR:HDLCompiler:718 - “D:\ISE\DATA_TR\tranform8_4\channel_16.v” Line 65: Port connections cannot be mixed ordered and named原因例化模块时信号名后多了一个“,”...

2018-11-12 09:31:17 1254

原创 Xilinx的clocking wizard_时钟输出接普通I/O口遇到的问题以及需要注意的问题

一开始是使用了clocking wizard 想分出来2个时钟来输出(CLK_50M和MCLK),并且再用产生的一个时钟生成其他信号输出,结果一开始就报错,提示不可以用做输出。然后没有直接输出MCLK信号,而是将次信号做了个寄存器缓存再输出,然而综合却出现了错误:WARNING:Place:1205 - This design contains a global buffer instance,...

2018-10-29 15:07:18 5497 1

原创 关于状态机的书写规范

1、四段式状态机的书写规则第一段:同步时序的always模块,格式化描述次态迁移到现态寄存器。代码如下always @(posedge clk or negedge rst_n) begin if(!rst_n)begin state_c <= IDLE; end else begin state_c <= state_n; endend第二段...

2018-10-15 09:57:52 845

原创 计数器的计数

一、计数器的加一条件确定一定要选择有效的加1条件,若要连续计数,那么一个时钟脉冲是无法作为加1条件去计数的。下面部分为不需要连续计数的普通计数器。always @(posedge clk or negedge rst_n)begin if(rst_n == 1'b0)begin cnt <= 0; end else if(add_cnt)begin if(en...

2018-09-26 09:39:56 2506

转载 Xilinx------BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用

目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。 FPGA 全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RA...

2018-09-12 15:15:20 3461

转载 BRAM和DRAM的区别

Xilinx的FPGA开发板可以直接调用RAM,其中包括了BRAM和DRAM。经过网上查找资料发现,这两者的区别在于: 选择distributed memory generator和block memorygenerator标准: Dram和bram区别: 1、bram 的输出需要时钟,dram在给出地址后既可输出数据。 2、bram有较大的存储空间,是fpga定制的ram...

2018-09-07 14:40:32 6330

转载 FPGA跨时钟域的处理方法

一、时钟域 如果一个设计全局只使用了一个时钟,那么此设计有一个时钟域。如果在一个设计中有两个时钟去控制不同的接口,那么就称这个设计中有两个时钟域。如下图所示 当时钟不匹配时,就要进行同步化,否则就可能出现亚稳态,从而造成整个设计不稳定。 二、亚稳态 亚稳态其实就是数据的转变没有符合时钟采样所需要的setup/hold时间,在时钟的上升沿或下降沿到来时正好...

2018-09-07 14:25:26 14161

原创 关于FPGA顶层模块

实例化模块后,若要拼接模块,则必写顶层模块。而今天遇到一个尴尬的问题,无论我怎么在顶层实例化信号,在ISE的综合RTL图里的信号线总是连接不上。后来发现,不能无脑直接改引用信号,而是用你需要用到的输入信号去引用输出信号,输出信号保持调用自身。 图中的IP_RECEIVE模块中的txen信号来自于IP_SEND模块,那么引用时就该在IP_RECEIVE的实例化中来引用: ...

2018-09-04 15:03:30 11202

WM8731手册

一款音频器件,具有麦克风采集,音频输入输出等功能。支持多位输出

2018-09-03

空空如也

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

TA关注的人

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