耐心的小黑
七月份就上班了,比较忙!
展开
-
SPI协议详解
一、SPI简介SPI(Serial Peripheral interface)是由摩托罗拉公司定义的一种串行外围设备接口,是一种高速、全双工、同步的通信总线,只需要四根信号线即可,节约引脚,同时有利于PCB的布局。正是出于这种简单易用的特性,现在越来越多的芯片集成了SPI通信协议,如FLASH、AD转换器等。SPI的通信原理比较简单,它以主从方式工作,通常有一个主设备和一个或多个从设备。二、SPI接口SPI通信需要四根线,分别为SPI_CS、SPI_CLK、SPI_MOSI和SPI_MISO。其中SP原创 2021-01-26 10:07:11 · 4974 阅读 · 0 评论 -
异步FIFO格雷码及同步相关问题?
零、前言关于异步FIFO如何设计请参考之前的一篇文章:手写异步FIFO。关于异步FIFO的空满现象可以参考:你真的理解异步FIFO读写中的空满现象吗?一、格雷码的作用格雷码的每两个相邻码字只有1bit的变化,将多bit的地址转换成对应的格雷码然后进行跨时钟域的传递,就可以直接使用两级flop进行同步。并且由于只有一个bit变化,那么即使采样错误也只有一种错误的可能,也即1变成了0或者0变成了1,不会出现其他各种不稳定的状态。而且应用到异步FIFO的地址指针中,采样到的只有一个bit不同的错误原创 2021-12-20 15:38:59 · 3265 阅读 · 0 评论 -
你真的理解异步FIFO读写中的空满现象吗?
一、为什么在wclk时钟域判断是否满,而在rclk时钟域判断是否空?首先需要知道的是,rptr同步到wclk时钟域是需要时间的,也就是读地址的变化不能立刻在wclk时钟域被感知到。1、假设我们在wclk时钟域判断是否满当FIFO满后,如果此时又发生了读操作,rptr更新,并且FIFO由满变不满了;当wclk和rclk频率比较接近或者wclk频率比较低时,此时在写时钟域可能不能及时采样到新的rptr,那么就会还认为FIFO是满的。其实这种情况就是我们说的 假满 ,也即明明不满却满信号有效。假满是不影原创 2021-12-18 19:39:32 · 6118 阅读 · 0 评论 -
FIFO设计中与深度depth相关的问题
一、前言关于异步FIFO的知识请参考之前的一篇文章:手写异步FIFO二、问题描述如果FIFO的深度不是2的幂次,那么格雷码其实是不连续的,也即在最大值跳变到最小值时不止一个bit发生了变化。当然你也可以设计一个深度略大的,并且是2的幂次的FIFO,但是这样其实是浪费资源的。例如我们需要一个深度为10的FIFO,此时我们可以设计一个深度为16的FIFO,但是这样会浪费资源。那么我们应该怎么办呢?三、问题解决其实我们可以换一个思路,通过观察下表不难发现,格雷码具有对称性。0-15这16个格雷码,如果原创 2021-12-16 12:05:12 · 3010 阅读 · 0 评论 -
FIFO的深度你会计算吗?
作者:星雨夜澈出处:http://www.cnblogs.com/dxs959229640/数字IC设计中我们经常会遇到这种场景,工作在不同时钟域的两个模块,它们之间需要进行数据传递,为了避免数据丢失,我们会使用到FIFO。当读数据的速率小于写数据的速率时,我们就不得不将那些还没有被读走的数据缓存下来,那么我们需要开多大的空间去缓存这些数据呢?缓存开大了会浪费资源,开小了会丢失数据,如何去计算最小FIFO深度是我们讨论的重点。数据突发长度(burst length)在讲解如何去计算FIFO深.转载 2021-12-19 20:09:55 · 1845 阅读 · 0 评论 -
SD卡介绍
一、SD卡简介SD卡的英文全称是Secure Digital Card,即安全数字卡(又叫安全数码卡),是在MMC卡 (Multimedia Card,多媒体卡)的基础上发展而来,主要增加了两个特色:更高的安全性和更快的读写速度。SD卡和MMC卡的长度和宽度都是32mm x 24mm,不同的是,SD卡的厚度为2.1mm, 而MMC卡的厚度为1.4mm,SD卡比MMC卡略厚,以容纳更大容量的存贮单元,同时SD卡比MMC卡触 点引脚要多,且在侧面多了一个写保护开关。SD卡与MMC卡保持着向上兼容,也就是说,M转载 2021-01-26 22:06:21 · 12046 阅读 · 5 评论 -
SDRAM详细介绍
以下内容来自正点原子的FPGA开发指南,觉得讲解的非常好,就搬了过来!!!零、前言SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器。同步是指内存工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。SDRAM具有空间存储量大、读写速度快、价格相对便宜等优点。然而由于SDRAM内部利用电容来存储数据,为保证数据不丢失,需要持转载 2021-01-25 23:52:36 · 8191 阅读 · 0 评论 -
VGA介绍
以下内容来自正点原子的FPGA开发指南,觉得讲的不错,就搬了过来。一、VGA简介VGA的全称是Video Graphics Array,即视频图形阵列,是一个使用模拟信号进行视频传输的标准。早期的CRT显示器由于设计制造上的原因,只能接收模拟信号输入,因此计算机内部的显卡负责进行数模转换,而VGA接口就是显卡上输出模拟信号的接口。如今液晶显示器虽然可以直接接收数字信号,但是为了兼容显卡上的VGA接口,也大都支持VGA标准。VGA接口定义及各引脚功能说明如图 18.1.2所示,我们一般只用到其中的1(转载 2021-01-26 20:45:08 · 15138 阅读 · 1 评论 -
Verilog RTL 级低功耗设计
下表显示了在数字设计的各个层次上可减少功耗的百分比。RTL 级之后,功耗的减少量已经非常有限。作为一个编写 Verilog 的伪码农,系统级减少功耗的工作也可参与一些,但重点应该放在 RTL 级来减少功耗。一、并行与流水对于一个功能模块,可以通过并行的方式实现,也可以通过流水线的方式实现,这两种方法都是用资源换速度。在一定的场合下灵活的使用这两种方法,可以降低功耗。并行处理并行处理,可以同时处理多条执行语句,使执行效率变高。所以在满足工作需求的条件下,采用并行处理,可降低系统工作频率,减少功转载 2021-11-22 10:52:24 · 2433 阅读 · 0 评论 -
基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)
一、前言关于Vivado MIG IP核详细配置可以参考我之前的文章:基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL)关于MIG IP核的用户端的接口时序可以参考这篇文章:XILINX 的 MIG IP(非AXI4)接口时序以及控制二、实验内容本次实验的内容主要是通过MIG IP核向DDR3读写数据,DDR3的接口时序由ddr_top模块提供:ddr_top模块的数据来源是wr_fifo,wr_fifo的数据实际来自top_sd_photo模块(本实验仿真原创 2021-10-27 12:11:09 · 2594 阅读 · 4 评论 -
SPI协议的数据读写实现(spi_slave)
一、SPI协议介绍SPI协议详解二、程序设计该模块接收8路16bit的数据信号ave1---ave8,以及标志数据有效的信号ave_valid;该模块作为SPI的slave端,可以通过spi_miso将ave数据发送出去;也可以通过spi_mosi接收master端发送来的数据,并将数据再通过godata发送出去;该模块采用的是模式0:CPOL = 0,CPHA = 0;该模块可以接收两种命令:读命令COMMAND_READ = 8'hA5、写命令COMMAND_WRITE = 8'H5A;原创 2021-10-19 22:06:19 · 5673 阅读 · 0 评论 -
FPGA 16bit 串口发送程序设计
一、前言在之前的一篇文章—FPGA UART串口通信实现 中,已经介绍过了串口通信的基础知识。你可能会发现,串口发送的一帧中数据位只能为5、6、7、8 位,也就是一次最多发送8bit的数据。最近在做一个项目,需要将图像数据保存到本地。想法是先将到来的图像数据写入RAM中,然后再读出来并用串口发送出去,串口调试助手一般都可以保存接收的数据到本地,这样就可以将图像数据保存到本地了。但是我的图像数据是16位的,我需要保存全部bit,不能截断后直接使用8bit串口发送的程序,所以就干脆利用状态机设计一个16bi原创 2021-09-10 12:19:37 · 1735 阅读 · 1 评论 -
verilog Booth算法乘法器的实现(有无符号)
一、算法说明1、具体的Booth算法原理,可以自行搜索,这里提供两篇文章,仅供参考。https://www.cnblogs.com/wangkai2019/p/11144367.htmlhttps://www.zhihu.com/question/376377752、算法实现说明:①假设有被乘数A、乘数B,宽度都为n=8②建立P空间,P空间的宽度为2*n+1,P的值具体由操作数A和B决定,在下面的示例中可以看出③根据P[0]、P[1]的值确定接下来需要执行的操作;紧接着再根据P的最高位P原创 2020-10-15 17:34:31 · 5866 阅读 · 4 评论 -
verilog 实现32位加法器(超前进位)
一、移位相加乘法器—串行形式1、RTL代码module unsigned_mul_1 #( parameter DATAWIDTH=8)(clk, x, y, result); parameter s0 = 0, s1 = 1, s2 = 2; input clk; input [DATAWIDTH-1:0] x, y; output [DATAWIDTH*2-1:0] result; reg [转载 2020-10-03 18:33:29 · 15971 阅读 · 0 评论 -
verilog 整数开方算法实现(逐次逼近法)
本文对原文的代码做了一些注释和微调,为的是更加方便理解!!!一、逐次逼近算法逐次逼近算法流程如图 1所示,首先数据输入data[7:0],接着设置实验值D_z[3:0]和确定值D_q[3:0],然后按照从高往低的顺序,依次将每一位置1(如D_z[3]置1),再将实验值平方后与输入数据比较,若实验值的平方大于输入值(D_z^2 > data),则此位为0(D_q[3]为0),反之(D_z^2 ≤ data)此位为1(D_q[3]为1);以此迭代到最后一位。可见,如果是n bit的数据,那么需要n/转载 2021-04-06 20:12:08 · 12579 阅读 · 3 评论 -
手写异步FIFO
以下内容摘自:《正点原子逻辑设计指南》一、异步FIFO简介异步 FIFO 有两个时钟信号,读和写接口分别采用不同时钟,这两个时钟可能时钟频率不同,也可能时钟相位不同,可能是同源时钟,也可能是不同源时钟。在现代逻辑设计中,随着设计规模的不断扩大,一个系统中往往含有数个时钟,多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步 FIFO 是这个问题的一种简便、快捷的解决方案,使用异步 FIFO 可以在两个不同时钟系统之间快速而方便地传输实时数据。异步 FIFO 指针的考虑:为什么异步 FI转载 2021-03-09 17:52:35 · 3307 阅读 · 1 评论 -
Verilog 图像数据的采样和缓冲(FMC_apt)
一、问题提出我们假设上一级传输过来了如下的图像数据:时钟为60MHZ,HBLANK为512CLK,HSIZE为4096CLK,VSIZE为(4096+512)*4096+512=18874880CLK,VBLANK为14458453CLKDATA_OUT为16bit,一次传输4096个数据。如果想通过VGA将图像显示出来,VGA显示用的时钟是65MHZ,那么就有两个问题需要我们解决:图像分辨率是4K * 4K,数据量太大,我们需要将其压缩为比如512 * 512;图像数据的时钟和原创 2021-06-12 16:21:34 · 1565 阅读 · 0 评论 -
AHB协议的verilog实现(无等待/单次传输)
一、AHB协议介绍关于AHB协议的具体内容可以参考下面这篇文章:AMBA 系列之 AHB 协议下图是三个主机和四个从机的 AMBA AHB 设计结构。典型的 AMBA AHB 系统设计包含以下的部分:AHB 主机:总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。AHB 从机:总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。AHB 仲裁器:总线仲裁器确保每次只有一个总线主机被允许发起数原创 2021-05-03 20:47:32 · 6933 阅读 · 21 评论 -
FPGA 读取SD卡图片数据(top_sd_photo)
以下内容来自正点原子的FPGA开发指南,觉得讲的不错,就搬了过来。一、SD卡介绍传送门:https://blog.csdn.net/qq_39507748/article/details/113195336初始化以及读写操作的流程文章中也有说到。二、实验内容使用FPGA开发板向SD卡指定的扇区地址中写入512个字节的数据,写完后将数据读出,并验证数据是否正确。三、程序设计SD卡初始化、写操作以及读操作是相互独立且不能同时进行的,因此我们可以将SD卡的初始化、写操作以及读操作分别划分为三个独立的原创 2021-01-28 08:57:59 · 4663 阅读 · 2 评论 -
FPGA VGA图片显示(vga_top)
以下内容来自正点原子的FPGA开发指南,觉得讲的不错,就搬了过来。一、VGA简介传送门:VGA介绍二、实验内容使用开拓者开发板上的VGA接口在显示器的屏幕中心位置显示彩色图片。显示分辨率为640*480,刷新速率为60hz,图片的大小为100 * 100。三、程序设计图 21.4.1是根据本章实验任务画出的系统框图。其中,时钟分频模块负责产生像素时钟,VGA驱动模块产生行场同步信号及像素点的纵横坐标,VGA显示模块输出图像数据,ROM用于存 储需要显示的图片。VGA显示模块中的ROM是通过例原创 2021-01-27 18:27:32 · 2405 阅读 · 10 评论