
FPGA
MTIS
是记录,分享,交流,亦是进步。
展开
-
基于FPGA的LED全彩图形显示控制器设计
以下是基于FPGA的LED全彩图形显示控制器设计的1核心内容,因为静态驱动相较于动态扫描驱动方式所用的驱动芯片会大大增加,LED屏的成本也会随之升高,动态扫描要提高亮度增加扫描频率就可以很好达到,所以这种全静态驱动的LED已经很少见到。本文是围绕静态驱动进行展开。由于刚接触设计,文中必然会有错误或者不足有待改进之处诚请读者指出。优快云不经常上,如果你也是刚接触LED屏驱动设计...原创 2020-01-13 19:59:53 · 5692 阅读 · 1 评论 -
FPGA之IIC(I2C)通信EEPROM控制器设计
关于IIC通信用一个具体实例来进行说明几个重要的信号空闲状态:SDA,SCL均处于高电平状态。起始信号:SCL为高电平时SDA由高到低跳变停止信号:SCL为高电平时SDA由低到高跳变数据有效性:在SCL为高期间,SDA信号必须保持稳定不能发生变化,只有在SCL为低电平时SDA信号才能发生变化。应答信号ACK:要求在发送或者接受时候每第8个周期下降沿后的低低电平将SDA释放同时拉低SDA,在SCL在第9个时钟周期高电平时SDA为低电平说明主机或者从机接受到数据,为高说明未接受或者不想接原创 2020-08-20 17:37:42 · 2940 阅读 · 3 评论 -
FPGA之UART传输
UART:universal asynchronous receiver-transmitter通用异步收发,控制器与外部设备进行数据通信无非两种,一种是串行通信另一种是并行通信。并行通信在早期的计算机系统中很常见,它相比串行通信在相同时钟下有着更高的速度。可以简单的理解成并行通信传输的数据线不止一根,而是由多根组成。但是随着CPU的频率越来越高,和外部器件的工作频率的提升,并行通信的弊端也随之而来:由于外界环境干扰并行通信的数据线上的信号并不是同一时刻到达,这就导致在实际信号传送和接收在时钟采样下建立时.原创 2020-08-16 17:57:26 · 1792 阅读 · 0 评论 -
FPGA之SDRAM控制器设计(四)
FPGA之SDRAM控制器设计(四):读模块设计:下面是带有自动预充电的读时序图。图上所示的突发长度BL为4,本次设计中一开始初始化时BL为2,所以只读取两个突发长度(4字节)读状态转移图读模块设计:`include "head.v"module read( input clk, input capture_clk, input soft_rst_n, input rd_en, input [12:0] row, input原创 2020-08-14 09:55:38 · 2789 阅读 · 0 评论 -
FPGA之SDRAM控制器设计(三)
FPGA之SDRAM控制器设计(三):写写由于已经涉及了上电刷新,写三个大的状态转移,先把状态转移图给出。主控状态转移图是基于手册上描述来的。在代码注释中会给出每个状态的意义解释。写时序图主控设计(含读模块):`include "head.v"module mainref_fsm( init_done,ref_done,clk,soft_rst_n,wr_en,rd_en,init_en,ref_en,rt_en, rt_flag,sel_mux,local_wd.原创 2020-08-11 16:14:51 · 2126 阅读 · 0 评论 -
FPGA之SDRAM控制器设计(二)
FPGA之SDRAM控制器设计(二):刷新这次要来解决上次留下来的刷新问题,在100us后首先要经过两次刷新才进行模式寄存器设置。这颗SDRAM芯片需要每隔64ms对8192行(列地址10-位,行地址13位)的每一个存储电容进行一次刷新,因为不刷新电充会泄露电流导致存储信息丢失。那每一行的刷新时间为64/8192 ≈ 7810ns,注意刷新是以行为单位,器芯片内部有一个计数器,这个计数器不是时钟直接驱动的,而是AUTO PRECHARGE驱动,每发一次atuoprecharge命令这个计数器加1,我们是原创 2020-08-10 21:50:40 · 2749 阅读 · 0 评论 -
FPGA之SDRAM控制器设计(一)
MT48LC128M4A2 – 32 Meg x 4 x 4 banks是512M SRAM,总体概述如下图分别从上电初始化,刷新,写,读四个部分进行设计,此外还包含主控状态机,一个顶层。1:上电初始化整体架构:从控制器到要控制的芯片可以分成20位的bus总线,时钟线sdr_clk,数据总线DQ以及DQM。上电时候主要是对bus总线的高4位也就是sdr_cmd进行配置。也就是要做的第一步,比较简单就是对sdr_cmd进行几次操作。其中注意在逻辑设计时候输出的sdr_clk时钟要和..原创 2020-08-08 09:16:49 · 3742 阅读 · 0 评论 -
FPGA之CRC校验
CRC校验原理求解CRC-8的编码电路和CRC校验的原理G(X) = X8+H7*X7+H6*X6+H5*X5+H4*X4+H3*X3+H2*X2+H1*X1+X0生成多项式G(X)=9‘b1_0000_0111信息位(需要发送的数据)16’b=1100_1101_0010_11101100_1101_0010_1110__0000_0000(待编码的数据)1000_0011_1(二进制除法做异或运算)0100_1110_10100_00...原创 2020-07-26 20:56:06 · 3399 阅读 · 0 评论 -
FPGA之DDS信号发生器
DDS信号发生器 本文主要涉及以下几个问题1:频率控制字如何得到2:DDS的框图3:用MATLAB得到正弦波的数字量化4:设计文件5:仿真文件6:仿真图首先将正弦波信号离散化,离散成多少位的根据自己的设计精度要求来定,但最高位一定是符号位,负数用补码来表示;然后用rom或者ram来存储离散后的信号数据;再由频率控制字的累加来给出地址用于读出ROM或者ram中的数据。1:相位累加器的位宽设为n,fc/(2^n)称作频率分辨率,这是能分辨出的最小频率,提高相位累加器位...原创 2020-07-19 13:53:52 · 11885 阅读 · 4 评论 -
FPGA之流水线思想
FPGA之流水线思想(含代码)本文主要设计以下几个问题:1:什么是流水线2:流线线使用场景3:一个例子来说明流水线1:CASE1: 例如工厂要对一个产品进行组装,分为A,B,C三步,以往是一个人负责这三步。这三步分别用时T1,T2,T3。且一个人完成所有步骤后才能发出通知:我完成这个产品了,其他部门只有接收到这个通知后才能继续生产零部件供应下一次...原创 2020-07-12 17:42:15 · 7440 阅读 · 1 评论 -
如何在FPGA中存储处理非整数(小数)
如何FPGA中存储非整数(小数),数字的定点化处理1:一个提前要知道的知识:二进制数的原码反码补码2:举例说明一个二进制数的原反补3:回到最初的问题1:在数字系统中为了计算的方便正负数都用补码表示。正数的原码,反码,补码和自身一样不变。负数的反码是最高位的符号位不变,其它位取反,补码等于反码加一。2:4位有符号二进制数表示的范围是-8到7(补码)分别是1000 1001 1...原创 2020-07-11 10:46:03 · 4310 阅读 · 0 评论 -
FPGA之fifo设计
FPGA之手撕fifo(含设计代码和仿真)本文回答以下几个问题:1:fifo的读空和写满信号如何给出2:fifo的写控制模块设计3:fifo的读控制模块设计4:双口RAM使用5:顶层文件6:仿真文件编写7:modelsim的RTL仿真1:上一篇文章(FPGA之FIFO IP核详细教程)已经简单说了一下读写指针变换准则:概括一句话就是读地址和写地址不能...原创 2020-07-01 17:01:03 · 5454 阅读 · 5 评论 -
FPGA之FIFO IP核详细教程
FPGA之fifo的相关知识本文回答以下几个问题:1:fifo是什么,有什么作用;2:在使用fifo的两种模式;3:使用异步fifo IP核的详细步骤说明;4:RTL设计和仿真;5:功能仿真;下面一 一解释上面的几个问题 1: Fifo是什么 :fifo1是英文first in first out 即先进先出(...原创 2020-06-28 22:30:42 · 19261 阅读 · 1 评论