第一次模拟面试问题总结

文章目录


前言

第一次面试练习
纯问题,仅供参考!


一、基础知识

1.1、问FPGA什么时候发明的?都有哪些厂家?谈谈你对FPGA的了解。

FPGA(Field Programmable Gate Array,现场可编程门阵列,简称FPGA),作为专用专用集成电路(ASIC)中的一种半定制电路,是在PAL、GAL、CPLD等可编程逻辑器件基础上进一步发展的产物。FPGA于1985年由Xilinx创始人之一Ross Freeman发明,属于可编程逻辑器件PLD的一种。

国外的FPGA厂商巨头包括Xilinx、Altera、Lattice等。
国内的FPGA厂商有复旦微电子、紫光同创等。

1.2、FPGA内部有多大内存?

在这里插入图片描述
在这里插入图片描述

1.3、什么是分布式RAM,什么是块RAM,详细解答?

分布式RAM是一种分散在FPGA逻辑资源中的存储器,例如查找表LUT就是一小块分布式RAM。
分布式RAM通常适用于需要低延迟存储和高速数据读写操作的应用。
分布式RAM的容量通常较小,通常以Kb为单位。

块RAM是FPGA中的大容量存储器资源,通常以单独的整块形式存在。
块RAM常用于存储数据结构、缓存、帧缓冲区等需要大容量存储的应用。
块RAM的容量通常较大,可用于存储大量数据,通常以Mb为单位。
块RAM通常速度较快,但相对于分布式RAM来说,它们的访问速度可能较慢。

1.3、竞争冒险和亚稳态的区别?

竞争冒险:在组合逻辑电路中,由于输入端的两个信号同时向相反的逻辑电平跳变,导致输出产生毛刺的现象。
解决方法:1、使用时序逻辑输入或选通信号输入。2、添加冗余项。3、输出添加滤波电容。

亚稳态:在时序逻辑电路中,触发器无法在一段时间(建立保持时间)内达到一个稳定的状态,从而导致输出的不稳定。
解决方法:1、降低时钟频率。2、使用反应更快的触发器。3、输入采用两级寄存器打拍。

1.4、如何跨时钟域处理?异步fifo是怎么实现的?

单比特信号:展宽加打拍同步(快时钟域到慢时钟域)。
在这里插入图片描述
多比特信号:
1、异步fifo。(写入和读取端口分别连接到不同的时钟域)
2、握手信号加保持寄存器。
3、具体电路具体分析。
在这里插入图片描述

1.5、FPGA内部组成?

LABs(逻辑阵列块):有多个逻辑单元(LEs)组成,每个逻辑单元由一个查找表和一个触发器组成。EP4CE6F17C8逻辑阵列块有16个LE。
IOB(可编程逻辑IO口):有输入(in)、输出(out)、输入输出(in_out)三种。
时钟资源:锁相环(PLL)——(1、使输出时钟走全局时钟网络;2、分频,倍频,相位偏移)。EP4CE6F17C8有2个PLL。
嵌入式存储块——EP4CE6F17C8中的为M9K。
DSP模块——高性能乘法、除法、累加运算。

1.6、阻塞与非阻塞的区别?

阻塞就是执行的时候在某个地方卡住了,等这个操作执行完在继续执行下面的语句。
非阻塞就是不管执行完没有,我不管执行的结果是什么,反正我继续下面的事情。

(1) 在时序逻辑电路中一般使用非阻塞赋值。非阻塞赋值在块结束后才完成赋值操作,此赋值方式可以避免在仿真出现冒险和竞争现象。
(2) 在组合逻辑电路中一般使用阻塞赋值。使用阻塞方式对一个变量进行赋值时,此变量的值在在赋值语句执行完后就立即改变。
(3) 在assign语句中必须使用阻塞赋值语句。

1.8、对于一个项目,如何设计FPGA?

1、根据要求设计总体框图。
2、根据相关文档和框图编写代码。
3、功能仿真验证逻辑功能是否符合要求。
4、综合(生成网表文件),适配(布局布线到FPGA中)。
5、时序仿真验证电路是否满足时序要求。
6、上板验证。

二、三个串口区别

在这里插入图片描述

2.1、串口回环怎么设计的?每个模块都干了什么?

怎么设计:
1、串口回环使用的是UART协议。UART有两根线,RXD和TXD,分别用来接收数据和发送数据。UART协议速度从9600~115200bps(这里用的9600)。
2、项目需要实现的目标:FPGA接收来自上位机的一字节数据,校验数据是否正确;正确将该字节数据发回给上位机,不正确就发送0x00给上位机。
3、综上所诉,串口回环应该有3个模块,分别是数据接收模块RX,数据控制模块ctrl,数据发送模块TX。
在这里插入图片描述

各模块作用
1、RX数据接收模块用来接收上位机的一个字节数据,将一位串行数据转为8bit的并行数据(可以使用比特计数器或移位寄存器来实现),将8bit并行数据发给控制模块ctrl。
2、ctrl控制模块将8bit的并行数据发给发送模块TX。
3、发送模块对8bit的并行数据添加起始位,校验位和停止位,并转为串行数据发回给上位机。

三、DS18B20项目(先简单介绍)

DS18B20是一款单总线数字温度传感器,温度最大测量时间750ms,温度测量范围从-55℃到125℃,最小测量精度0.0625℃。
内部结构主要有四个部分:电源控制模块(外部电源模式或寄生电源模式(从总线上偷电));64位ROM(系列地址,器件地址,CRC校验码);9字节的SRAM(2字节温度数据,2字节报警值,1字节配置寄存器,3字节保留,1字节CRC校验);3字节EEPROM(2字节报警值,1字节配置寄存器)。
规定的工作方式:1、初始化。2、ROM指令。3、功能指令。
单总线协议:写0(主机拉低总线60~120us释放),写1(主机拉低总线大于1us释放),读数据(主机拉低总线大于1us,在12-15us时采样)。
在这里插入图片描述

综上所述:
该项目实际是一个驱动程序,驱动DS18B20实现温度的连续测量。因此设计框图有3个模块——驱动模块,数据处理模块,数码管显示模块。
驱动模块实现温度传感器的驱动,使用状态机驱动:空闲–>初始化–>跳过ROM–>温度测量指令–>等待–>初始化–>跳过ROM–>温度读取–>读数据–>初始化(循环)。
控制模块将读取到的温度数据进行处理:读取到的16位温度数据(高5位符号位,后11位数据位(补码形式))的后11位转为bcd码传给数码管显示。二进制转bcd可用两种方式实现:将二进制进行取余运算;将二进制码(大于4)进行加3移位。
数码管显示:动态扫描与人眼视觉残留。

3.1、DS18B20怎么设计的?

该项目实际是一个驱动程序,驱动DS18B20实现温度的连续测量。因此设计框图有3个模块——驱动模块,数据处理模块,数码管显示模块。
驱动模块实现温度传感器的驱动,使用状态机驱动:空闲–>初始化–>跳过ROM–>温度测量指令–>等待–>初始化–>跳过ROM–>温度读取–>读数据–>初始化(循环)。
控制模块将读取到的温度数据进行处理:读取到的16位温度数据(高5位符号位,后11位数据位(补码形式))的后11位转为bcd码传给数码管显示。二进制转bcd可用两种方式实现:将二进制进行取余运算;将二进制码(大于4)进行加3移位。
数码管显示:动态扫描与人眼视觉残留。

3.2、DS18B20温度传感器怎样才能一直测量温度?

使用状态机循环驱动:空闲–>初始化–>跳过ROM–>温度测量指令–>等待–>初始化–>跳过ROM–>温度读取–>读数据–>初始化(循环)。

3.3、DS18B20如何配置精度?

1、初始化
2、跳过ROM
3、发送0x4e,写eeprom命令。
4、先发送两个字节的温度命令,在发送一个字节的配置寄存器命令(第6位,第5位控制精度)。

3.4、怎么进行读0读1,写0写1?

写0(主机拉低总线60~120us释放),写1(主机拉低总线大于1us释放),读数据(主机拉低总线大于1us,在12-15us时采样)。
在这里插入图片描述

3.5、什么是总线?什么是单总线?

总线:一组物理连接,用于在 FPGA 内部或 FPGA 与外部设备之间传输数据或控制信号。
单总线:只有一根通信线,这根线既要传输数据,也要传输命令。

四、IIC写EEPROM(先简单介绍)

IIC协议:IIC有两根物理线SCL和SDA,空闲为高电平;IIC的速率有标准100kbps,快速400kbps和高速3.4Mbps三种;IIC的开始位是在SCL为高电平时将SDA拉低,数据位是在SCL为高电平时对SDA进行采样,停止位是SCL为高电平时将SDA由高拉低。
EEPROM全程是电可擦除可编程随机只读存储器,它的存储量大小为2kbit(两个block,每个block有256个存储单元,每个存储单元可以存储8位数据),它使用IIC通信协议,它有两种写(字节写,页写)和三种读(当前地址读,随机地址读,顺序读)。
在这里插入图片描述

该项目的要求是:上位机每次写入一字节数据,使用IIC协议写到EEPROM中,通过按键控制EEPROM的随机地址读,并将读取到的数据传回上位机。
总体框图有五个模块:RX接收上位机串行数据;按键消抖模块对按键进行消抖;TX将读取到的数据传回上位机;ctrl控制模块传输iic的命令,待写数据和地址数据;intf接口模块将按照命令来将数据转为iic通信的数据格式。

4.1、IIC的速率?由谁决定的?

IIC的速率有标准100kbps,快速400kbps和高速3.4Mbps三种;主要由从机(EEPROM)决定的。

4.2、EEPROM页写为什么是16字节(为什么手册上写的是16字节)?

手册:页写一次发送最多 16 个数据字节,这些数据临时存储在片上页缓冲区中,一旦主机发送了停止条件,这些数据就会被写入内存。

4.3、iic写eeprom项目,虚写是什么?怎么进行当前地址读?

虚写如图所示,虚写的目的是要将当前读地址移动到要读的地址位置上。可理解为将地址指针移动到要读的地址上。
在这里插入图片描述

4.5、IIC写完数据后多久能写入到器件中?

5ms
在这里插入图片描述

4.6、EEPROM内存大小?器件名?

存储量大小为2 * 256 * 8bit=4kbit(两个block,每个block有256个存储单元,每个存储单元可以存储8位数据)。
器件名:24LC04B

五、SPI写FLASH(先简单介绍)

SPI有四条物理线:cs_n(片选信号,拉低表示有效);sck(时钟信号);mosi(主机输出从机输入);miso(主机输入从机输出)。SPI的速率由通信双方可达到的速率要求决定,SPI的速率比IIC速率高。
SPI的数据传输有四种模式(时钟极性CPL为0表示SCK空闲为低电平,时钟极性CPL为1表示SCK空闲为高电平;时钟相位CPH为0表示数据在SCK前沿采样,在SCK后沿输出;时钟相位CPH为1表示数据在SCK前沿输出,在SCK后沿采样)。
flash又名闪存,型号为M25P16,存储大小为16Mbit,M25P16有32个扇区,每个扇区有256页,每页有256个存储单元,每个存储单元可以存储8bit的数据。M25P16最大速度可达50M时钟速率,使用SPI通信协议进行通信。
在这里插入图片描述
项目目标:从上位机传输一字节数据给FPGA,FPGA将数据传给M25P16;按键控制flash的读取,按下一次按键,读取一字节数据,并将读取到的数据传回上位机。
总体框图: 一共有五个模块:RX模块接收来自上位机的数据。按键消抖模块对按键输入进行消抖。TX模块将读取到的数据传回上位机。ctrl控制模块将带写入到flash的数据和命令等信号传给接口模块。intf接口模块将控制模块的数据按照命令发给flash。

5.1、怎么用spi协议读写flash的?数据流向是怎样的?

主要由控制模块接口模块组合来进行读写flash。
控制模块设置一个状态机:空闲–>写数据–>done–>空闲–>读数据–>done–>空闲。
接口模块设置的主状态机 为:
空闲–>写使能WREN–>扇区擦除SE–>写使能–>页写PP–>空闲
空闲–>读READ–>空闲
从状态机主要有写命令,写地址,写数据,读数据和延时5个状态。
在这里插入图片描述
数据流向
写数据:ctrl接收上位机数据–>从控制模块wr_fifo读出–>接口模块:先实现写使能WREN(片选拉低,mosi发送1字节cmd命令,片选拉高,延时200ns(两个cs_n间隔要大于100ns)),再实现扇区擦除(片选拉低,发送1字节cmd命令,发送3字节地址,片选拉高,延时200ns),再实现WREN,再实现PP(片选拉低,发1字节cmd命令,发3字节地址,发1字节数据,片选拉高,延时200ns)。
读数据:按键信号–>控制模块–>接口模块:从空闲跳读状态(片选拉低,发1字节cmd命令,发3字节地址,读1字节数据,片选拉高)。

5.2、spi的控制模块都干了什么?

将需要实现的功能转为命令信号和数据信号按照时序发送给接口模块的cmd_fifo和data_fifo中,接口模块会按照命令顺序进行相应的操作。

5.3、spi的速率是多少?怎么决定的?

SPI的速率可达几Mbps到几十Mbps。
SPI的速率由通信双方可达到的速率要求决定,SPI的速率比IIC速率高。

5.4、为什么flash只能写256字节?

手册中介绍的为:如果发送到器件的数据超过 256 个字节,则先前锁存的数据将被丢弃,并保证最后 256 个数据字节在同一页内正确编程。如果发送到器件的数据字节少于 256 个,它们会在请求的地址处正确编程,而不会对同一页的其他字节产生任何影响。
原因是flash中有一个256字节的数据buffer(缓冲器),因此最大只能写256字节的数据。
在这里插入图片描述

5.5 为什么写数据前要先扇区擦除?

因为扇区擦除指令可以将所有数据都置位(变为1),而写数据的PP指令只能将内部数据从1变为0。

六、SDRAM(先简单介绍)

SDRAM(同步动态随机存取存储器),基于电容结构的DRAM,8192行/64ms的刷新周期,顺序突发读写长度为1,2,4,8或整页。
SDRAM内部结构如图所示:可以看到,内存单元有4歌bank,每个bank有13行9列个存储单元,每个单元可以存储16bit的数据,因此存储量为256Mbit。

在这里插入图片描述
实验目标:上位机发送一字节数据,并将该数据写到sdram中。通过按键来读取sdram中的数据,并将读取到的数据传给上位机显示。
整体框图如图所示:其中,RX接收上位机数据;ctrl控制数据按照avalon总线协议进行读写数据;接口ip将按照sdram时序要求进行数据读写。key_debounce对按键进行消抖。TX将sdram中读取的数据传给上位机。
在这里插入图片描述

6.1、sdram的ip核设置了什么?

从上往下依次是:
列选通信号延时周期:CAS latency cycles:(3clk)
初始化中刷新命令需要的时间周期:(8个clk)
刷新命令的间隔:64ms刷新所有行:(7.8us)
刷新需要的时间:>63ns(70ns)
预充电命令需要的时间:100MHz的2个clk:(20ns)
行激活到读/写的延时:手册上的行激活到列激活时间延时:(20ns)
接收时间Access time:数据需要保持稳定的时间-手册上最大为5.4ns:(5.5ns)
写恢复时间:手册上没有写,但手册上写了预充电需要2clk的时间,在这段时间内,输入的数据无法写到SDRAM中:(20ns)
在这里插入图片描述

6.2、sdram配置寄存器都配置了什么?

A9:操作命令
0:突发读和突发写
1:突发读和单次写
A6,A5,A4:列选通延时
010:2个clk
011:3个clk
A3:突发方式
0:顺序突发
1:交错突发
A2,A1,A0:突发长度
000:长度为1
001:长度为2
010:长度为4
011:长度为8
111:顺序突发方式下的全页

在这里插入图片描述

6.3、怎么进行读写的?接口时序?

用Avalon-MM总线调用IP核进行读写的。Avalon接口时序如图所示:
在这里插入图片描述
:在waitrequest为低且write为高时写有效,写有效会将writedata和address传给接口IP核,由IP核写到SDRAM中。
:在waitrequest为低且read为高时读有效,读有效会将address对应的数据读出来。
读出的数据会延后,延后周期由设置的CAS决定。
读出的数据在readdata_vld时才有效。

6.4、描述一下SDRAM的读写时序。

SDRAM接口时序主要有写时序(写到写、写到读、写到预充电);读时序(读到读、读突发终止、读到写、读到预充电)等时序。
写时序:
在这里插入图片描述
写到写:
在这里插入图片描述
写到读:
在这里插入图片描述
写到预充电:写到SDRAM中需要2个clk
在这里插入图片描述

读时序:
在这里插入图片描述
读到读:
在这里插入图片描述
读突发终止:
在这里插入图片描述
读到写:
在这里插入图片描述
读到预充电
在这里插入图片描述

6.5、avalon总线都有哪些接口?我们用的是哪个?

**Avalon Streaming Interface(Avalon-ST):**支持单向数据流的接口,包括多路复用流,数据包和DSP数据。
**Avalon Memory Mapped Interface(Avalon-MM):**一种基于地址的读/写接口,是主–从连接的典型接口。
**Avalon Conduit Interface:**一种接口类型,适用于那些不适合任何其他Avalon类型的单个信号或信号组。您可以在一个PlatformDesigner系统内部连接管道接口(conduitinterface)。或者,您可以将它们导出以连接到设计中的其他模块或者连接到FPGA管脚。
**Avalon Tri-State Conduit Interface(Avalon-TC):**支持与片外(off-chip)连接的接口。多个外设可以通过信号多路复用(signalmultiplexing)来共享管脚,从而减少FPGA的管脚数和PCB上的走线数量。
**Avalon Interrupt Interface:**允许组件向其他组件发送事件信号的接口。
**Avalon Clock Interface:**驱动或接收时钟的接口。
**Avalon Reset Interface:**提供复位连接的接口。
用的Avalon-MM接口。

6.6、控制模块都有哪些状态?

空闲、写状态、读状态、DONE

idle2write:当waitrequest为低电平,并且wr_fifo中可读数据大于等于n个单位(16bit)——wr_fifo_rdusedw>=n
write2done:当写单位(16bit,一个字大小)计数器cnt_wr_word计数到最大值n-1时
idle2read:当按键按下(nedge_rd_req),waitrequest为低电平,并且rd_fifo中已经写入了大于等于n个单位(16bit)——rd_fifo_wrusedw>=n
read2done:当读单位(16bit,一个字大小)计数器cnt_rd_word计数到最大值n-1时

6.7、sdram的刷新操作?怎么确定单行刷新时,刷新的是哪一行?

刷新寻址由内部刷新控制器生成。
在这里插入图片描述

6.8、sdram的突发长度有哪些?

顺序突发长度有1、2、4、8和全页。
交错突发长度有1、2、4、8。

6.9、关于SDRAM你能说点什么?

SDRAM(同步动态随机存取存储器),基于电容结构的DRAM,8192行/64ms的刷新周期,顺序突发读写长度为1,2,4,8或整页。
SDRAM存储量为256Mbit,内部有4个bank,每个bank有13行9列个存储单元,每个单元可以存储16bit的数据。

6.10、讲一下sdram的预充电命令。

PRECHARGE 命令用于停用特定存储体中的打开行或所有存储体中的打开行。

在预充电时间 (tRP) 完成之前,不得向正在预充电的同一组(或多个组)发出另一个命令。

如果要对某一银行进行预充电,则需要指定特定的银行地址。如果要对所有组进行预充电,则应将 A10 与 PRECHARGE 命令一起设置为高电平。如果 A10 为高电平,则忽略 BA0 和 BA1。
如果该存储体中没有打开的行,或者先前打开的行已经在预充电过程中,则 PRECHARGE 命令将被视为 NOP。

6.11、sdram的工作原理?

电容充放电。

七、摄像头项目(先简单介绍)

摄像头用的是ov5640。
驱动模块配置的分辨率为1280720,采集帧数为30帧,数据格式为RGB565。
数据处理主要是边缘检测(步骤:灰度化、高斯滤波、二值化、sobel算子边缘检测)。
SDRAM控制:使用100MHz的频率进行SDRAM的读写操作(帧写入为一个bank,帧读出为另一个bank)
VGA驱动:针对ov5640的1280
720的一帧图像数据,将接收到的数据流中的有效数据提取出来。
在这里插入图片描述
各模块主要逻辑操作:

摄像头驱动:配置寄存器
1、上电延时20ms。
2、开始通过sccb发送命令与数据。
3、发送完所有数据后发送cfg_done信号标志配置结束。

采集数据模块:采集ov5640发来的数据
1、配置完成后(enable拉高),等待场有效信号的到来
2、在两个场有效信号之间,行参考信号为高时表示这个时候的像素信号为有效像素
Note:数据为8位宽,每两个像素时钟传输一个像素数据。

数据处理模块:灰度处理、高斯滤波、二值处理、Sobel边缘检测
灰度处理:
1、将RBG565转为RGB888
2、将RGB888转为灰度图像(R0.299+G0.587+B*0.114)

高斯滤波:
使用滤波算子进行加权平均
[1 2 1]
[2 4 2]
[1 2 1]

二值处理:
设置阈值,将大于该阈值的数设为全1,小于该阈值的数设为全0

Sobel边缘检测:
G = Gx + Gy = SxI + SyI
水平方向边缘算子
[-1 0 1]
[-2 0 2]
[-1 0 1]
垂直方向边缘算子
[-1 -2 -1]
[ 0 0 0]
[ 1 2 1]

SDRAM控制模块:
1、跨时钟域处理(两个异步FIFO,因为写fifo输入时钟为摄像头的像素时钟,输出时钟为SDRAM的100MHz;而读fifo的输入时钟为SDRAM的时钟,输出时钟为vga的60帧的75M时钟。)
2、仲裁机制:SDRAM什么时候写,什么时候读?FIFO深度设置?
当只有写请求拉高时,进行写;当前一个操作为读操作时,且读写请求都拉高时,执行写操作。
当只有读请求拉高时,进行读;当前一个操作为写操作时,且读写操作都拉高时,执行读操作。
3、乒乓操作:当写完等到读完,进行bank地址交换
4、丢帧:在写完等读完期间,来了一个sop信号,将该帧数据丢弃

SDRAM接口模块:
使用自带的ip核来实现接口模块。

VGA驱动:
针对ov5640的1280*720的图像数据,将接收到的数据流中的有效数据提取出来
在这里插入图片描述

7.1、摄像头配置模块配置了什么?

主要有:
分辨率:1280*720
采集帧数:30帧
数据格式:RGB565。

7.2、采集数据模块逻辑?sdram控制模块逻辑?这些操作都有什么意义?

采集数据模块:采集ov5640发来的数据
1、配置完成后(enable拉高),等待场有效信号的到来
2、在两个场有效信号之间,行参考信号为高时表示这个时候的像素信号为有效像素
Note:数据为8位宽,每两个像素时钟传输一个像素数据。
SDRAM控制模块:
1、跨时钟域处理(两个异步FIFO,因为写fifo输入时钟为摄像头的像素时钟,输出时钟为SDRAM的100MHz;而读fifo的输入时钟为SDRAM的时钟,输出时钟为vga的60帧的75M时钟。)
2、仲裁机制:SDRAM什么时候写,什么时候读?FIFO深度设置?
当只有写请求拉高时,进行写;当前一个操作为读操作时,且读写请求都拉高时,执行写操作。
当只有读请求拉高时,进行读;当前一个操作为写操作时,且读写操作都拉高时,执行读操作。
3、乒乓操作:当写完等到读完,进行bank地址交换
4、丢帧:在写完等读完期间,来了一个sop信号,将该帧数据丢弃

7.3、VGA的数据流向?VGA驱动需要注意什么?

显示一行数据需要处理两件事情。
第一:产生行同步HSYNC。丌难看出,HSYNC是一个脉冲信号,此信号的周期为:e=a+b+c+d,低电平时间为a。其中a、b、c、d均为时间信号,这些信号根据需要显示的分辨率丌同而丌同。
第二:产生显示的数据(DATA)信号,此信号为模拟信号,当在显示有效数据(Activevideo)内,DATA信号为0~0.714Vpp的模拟电压(R、G、B),根据分辨率的丌同,DATA的采样率、点数也皆丌相同。
帧数据时序与行时序类似,也就是显示一屏数据的时序。只是这里的基本单位为每行数据,而行数据里面的最基本单位为每个点。
在这里插入图片描述
在这里插入图片描述

7.4、在数据处理中每个滤波算法都是在做什么?各个模块都有什么意义?

灰度处理:
1、将RBG565转为RGB888
2、将RGB888转为灰度图像(R0.299+G0.587+B*0.114)

高斯滤波:
使用滤波算子进行加权平均
[1 2 1]
[2 4 2]
[1 2 1]

二值处理:
设置阈值,将大于该阈值的数设为全1,小于该阈值的数设为全0

Sobel边缘检测:
G = Gx + Gy = SxI + SyI
水平方向边缘算子
[-1 0 1]
[-2 0 2]
[-1 0 1]
垂直方向边缘算子
[-1 -2 -1]
[ 0 0 0]
[ 1 2 1]

7.5、控制模块为什么使用sdram而不用fifo进行数据存取?

1、图像一帧数据有1280*720=921,600个像素点,每个像素点有16bit的数据(RGB565),而SDRAM存储量为256Mbit,可以存储多帧的数据,若使用FIFO就需要很大的深度。
2、SDRAM可以实现高达100MHz的读写速度,满足84M的像素时钟要求和75MHz的VGA时钟要求。


总结

未完待续。。。

  • 13
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻常人家_二一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值