在FPGA视频图像处理系统中,经常需要使用到SDRAM作为视频图像缓存。SDRAM控制器可以分为上电初始化,自动刷新,读操作和写操作这四个部分,他们之间的转换可以通过状态机来控制。下面分别实现这几个部分。
1.SDRAM上电初始化 SDRAM上电初始化时序如下图所示。 由时序图可知初始化大概的过程为:上电后等待电源VDD和时钟信号稳定100μs(期间命令为空命令),同时在100μs内设置CKE(时钟使能)信号为高。随后对所有Bank发送预充电(PRECH ARGE)命令,发送两次自动刷新(REFRESH)命令,最后发送装载模式寄存器(LOAD MODE REGISTER)命令,并将设置寄存器的值传入地址总线A0~A11。 上述过程的实现可以通过线性序列机来实现。即需要对初始化过程时间进行计数,当时间到达时就执行某个命令。下面是部分代码。 1.计时器 2.命令执行时间设置 3.对应时间执行对应命令 2.SDRAM自动刷新 同样给出自动刷新的时序图。 过程比较简单:首先对所有Bank预充电,然后发送两次自动刷新命令。 同样可以使用线性序列机的方法来实现,这里就不重复了。但需要添加一个刷新状态标志。ref_opt_done=1表示刷新完成,ref_opt=1表示正在刷新。 3.SDRAM写操作 从时序图上看首先发出激活命令,并给出行地址Bank地址;随后发出写命令,并指定写入Bank,起始列地址和写入数据;最后进行预充电,关闭所有Bank。这里每次突发写入4个数据,即突发长度为4,突发长度可以在之前初始化的模式寄存器中设置。 同样使用序列机的实现方法,在写操作中也需要添加写操作完成状态标志,和过程状态标志。此外只有当写入突发长度数据的时候我们才使能数据线输入有效,其他时刻让数据线保持高阻态,所以要添加一个写数据状态标志Wr_data_valid=1时表示正在写数据。 4.SDRAM读操作 与写操作类似,但是我们输入读命令的时候,数据并不是立刻输出,而是要经过一个CAS_Latency后输出。这个延时也可以通过模式寄存器的配置来调整。我们同样需要给出读操作完成、读操作过程,读出突发数据的有效区间。 5.SDRAM控制器设计 首先SDRAM上电后进入空闲状态,初始化完成后进入刷新状态,然后根据输入命令进行转换,实际上状态机的控制对于刷新操作,读/写操作是有一个优先级的:刷新操作》写操作》读操作。即假设写命令和刷新命令同时到来时先执行刷新操作。下图为状态机的状态转移图。具体实现可参考完整代码。 由于SDRAM需要固定时间间隔刷新一次,我们还得考虑一个刷新定时器,固定时间产生一个刷新请求。 最后我们还需要考虑如果在读操作的时候,产生了刷新请求或写请求怎么办呢?写操作的时候,产生了刷新请求或读请求怎么办?或者在刷新操作时产生了读/写请求怎么办? 对于刷新请求的突然到来我们采取记住刷新标志,等待当前任务完成后进行刷新操作。 在刷新操作时读/写请求突然到来,我们也采取记住读/写标志,等待当前任务完成后进行读/写操作。 但是对于在读/写操作时外部读/写请求的到来,我们选择了忽略这次请求。部分代码如下。 由于视频信号数据读入读出都是连续不断的,因此在某些时刻会导致读写的遗漏,但一般会在SDRAM读出写入前加上一个FIFO进行缓存控制数据的读写,当写FIFO中数据大于一次突发长度时,使能写信号;当读FIFO中数据小于突发长度时,使能读信号,就可以解决这个问题。编辑:lyn
浅谈电机控制中的MCU选型 通讯模块用于单片机跟外部进行信息传输,比如串口通讯模块,可以支持上位机跟单片机之间的通讯,像串口程序.... 发表于 06-30 12:27 •
下一个级别,TrustFLEXv,提供了使用客户选择的证书颁发机构的灵活性,同时仍然受益于预配置.... 星星科技指导员 发表于 06-30 10:57 •
Arria 10 SoC确保系统设计满足现在和未来性能要求 借助 Arria 10 SoC,您可以通过将 GHz 级处理器、FPGA 逻辑和数字信号处理 (.... 星星科技指导员 发表于 06-30 09:50 •
如何在IP的kernel module里设置并使用IP interrupt 用附件里的 system-user.dtsi 把 project-spec/meta-user/re.... FPGA之家 发表于 06-30 09:48 •
MISRA C可用于提高软件质量考虑 通过定义 C 语言的可预测子集并为开发人员提供指导,MISRA C 为嵌入式控制系统和独立软件的.... 发表于 06-30 09:27 •
最近两年RISC-V很火,主要原因还是因为这个处理器是开源的。目前市面上也有有很多的书籍讲RISC-V的原理和架... 发表于 06-29 21:36 • 676次
MASS竞猜幸运哈希游戏系统开发中冲突的解决方法 3.2 链地址法 链地址法就是将相应位置上冲突的所有关键词存储在同一个单链表中。 设关键字序列为 4.... 開發丨KFZ433 发表于 06-29 16:51 • 165次
代码永远不应陷入无限循环,但逻辑错误或未发生预期的外部事件可能会导致代码挂起。当代码在等待某事发.... 星星科技指导员 发表于 06-29 15:43 • 100次
使用测试自动化左移您的安全关键软件测试 在某些软件安全标准中,例如 DO-178B 和 DO-178C,认证是在系统级别完成的,个别工具.... 星星科技指导员 发表于 06-29 14:25 •
面会有短暂空白,虽然官方提供了引擎预热机制,但是需要提前将所有页面.... 谷歌开发者 发表于 06-24 16:28 • 310次
LVDS电平以及LVDS25电平能否约束到这个BANK上呢? 当两个banks的I/O口作为LVDS电平时,HR banks的I/O电压VCCO只能为2.5V,H.... FPGA设计论坛 发表于 06-24 11:28 • 279次
BNN 可以检测多达十个 1 秒的关键短语,非常适合通过语音进行 HMI。为了提高检测精度,仅在.... 星星科技指导员 发表于 06-24 10:09 • 582次
【高云半导体Combat开发套件试用体验】之示例工程编译 使用gw2a18_test工程,编译报错:ERROR (PJ0007) : Please validate Synthesis Tool is GowinSynthesis, or install... 发表于 06-23 17:26 • 657次
【高云半导体Combat开发套件试用体验】FPGA基本语法及Combat使用小技巧 FPGA常用的基本类型wire、reg和parameter。wire:线网型数据,表示硬件单元之间的物理连线,是verilog中默认的数据类型,由a... 发表于 06-23 14:51 • 1620次
LDPC 的研究将继续进行,我们可以期待这些代码在不同的通信场景中会发现更多的适用性。我们很可能.... 星星科技指导员 发表于 06-23 14:10 • 189次
PCIe 设计对设计人员提出了重大挑战。对接口的要求各不相同,具体取决于 PCIe 设备是否必须.... 星星科技指导员 发表于 06-23 10:42 • 218次
在SpinalHDL里实现优雅的添加待跟踪波形信号 在FPGA的开发过程中,在线抓取波形往往是终极调试大法。而如何抓取信号,相信做逻辑开发的小伙伴都是轻车熟路,张口就来,无... 发表于 06-22 14:37 • 438次
【高云半导体Combat开发套件试用体验】开箱及开发准备工作 开箱后用了一个大静电袋装着开发板和一根Micro USB线,没有电源线(DC5521),我的并没有出现其他坛友亚克力板破损的情况,... 发表于 06-20 16:37 • 1995次
CD4536B-MIL CMOS 可编程定时器 CD4536B是一个可编程定时器,由24个纹波二进制计数器级组成。该设备的突出特点是其灵活性。器件可以从1到2 24 计数,或者可以绕过前8个阶段以允许输出,可以通过4位代码从剩余的16个阶段中的任何一个中选择。它可以由外部时钟或RC振荡器驱动,可以使用片上组件构建。输入IN1用作外部时钟输入或片内RC振荡器的输入。 OUT1和OUT2是外部RC组件的连接端子。此外,提供片上单稳态电路以允许可变脉冲宽度输出。使用这些功能的组合可以实现各种定时功能。 8-BYPASS输入上的逻辑1可以旁路前8个阶段,并使阶段9成为最后16个阶段的第一个计数器阶段。 16个输出中的1个的选择由解码器和BCD输入A,B,C和D完成.MONO IN是片上单稳态振荡器的定时输入。通过10K欧姆或更高的电阻将MONO IN端子接地,禁用单触发电路并将解码器直接连接到DECODE OUT端子。一个电阻到V DD 和一个从MONO IN端子接地的电容使能单触发电路并控制其脉冲宽度。 逻辑使能快速测试模式1对8-BYPASS,SET和RESET。该模式将24级计数器分为三个8级部分,以便快速测试序列。 CD4536B型采用16引脚密封双列直插式陶瓷封装(F3A后... 发表于 11-02 19:03 • 817次
SN5497 同步 6 位二进制比率乘法器 这些单片,完全同步的可编程计数器采用54/74系列TTL电路,可实现32兆赫的典型最大工作频率。这些6位串行二进制计数器具有缓冲时钟,清零和使能输入,用于控制计数器的操作,以及选通输入,用于启用或禁止速率输入/解码AND-OR-INVERT门。输出具有额外的级联,用于级联和传输统一计数率。 当清除,选通和使能输入为低电平时,计数器启用。启用计数器后,输出频率等于输入频率乘以速率输入M并除以64,即: 当速率输入为二进制0(所有速率输入为低)时,Z仍然很高。为了级联器件以执行12位速率乘法,使能输出连接到下一级的使能和选通输入,每级的Z输出连接到另一级的单位/级联输入,并且子多频率取自Y输出。 当连接到时钟输入时,单位/级联输入可用于在速率输入/解码门被选通禁止时将时钟频率(反相)传递到Y输出。单位/级联输入也可以用作Y输出的控制。 特性 执行固定速率或可变速率分频 适用于算术,雷达,数字到模拟的应用(D /A),模数(A /D)和其他转换操作 典型最大时钟频率... 32兆赫 参数 与其它产品相比 比率乘法器/分频器/计时器 Technology Family VCC (Min) (V) VCC (Max) (V) ... 发表于 11-02 19:03 • 303次
CD4541B-MIL CMOS 可编程定时器 - 高电压类型(额定 20V) CD4541B可编程定时器由一个16级二进制计数器,一个由外部RC元件(2个电阻和一个电容)控制的振荡器,一个自动电源-on复位电路和输出控制逻辑。计数器在正边沿时钟转换时递增,也可以通过MASTER RESET输入复位。 此定时器的输出是来自第8,10,13或16计数器的Q或Q \输出阶段。使用时间选择输入A和B选择所需的级(参见频率选择表)。 输出可通过MODE输入,引脚10选择的两种模式中的任何一种(参见真值表)。当该MODE输入为逻辑“1”时,输出将是连续方波,其频率等于振荡器频率除以2 N 。将MODE输入设置为逻辑“0”并且在启动MASTER RESET之后,输出(假设已选择Q输出)在2 N-1 计数后从低状态变为高状态并且保持该状态,直到施加另一个MASTER RESET脉冲或MODE输入设置为逻辑“1”。 通过将AUTO RESET输入(引脚5)设置为逻辑“0”来初始化时序,打开电源。如果引脚5设置为逻辑“1”,则AUTO RESET电路被禁止,直到施加正MASTER RESET脉冲并返回低电平后才开始计数。 AUTO RESET消耗相当大的功率,如果需要低功率操作,则不应使用。为了实现可靠的自动上电复位,... 发表于 11-02 19:03 • 399次
TLC555M 低功耗 LinCMOS 与其它产品相比 计时器 Frequency (Max) (MHz) VCC (Min) (V) VCC (Max) (V) Iq (Typ) (uA) Rating Operating Temperature Range (C) Package Group Package Size: mm2:W x L (PKG) var link = "zh_CN_folder_p_quick_link_description_features_parametrics"; com.TI.Product.handleQuickLinks('parametric','参数变化','#parametrics',link); TLC555M 2.1 2 15 250 Military -55 to 125 CDIP LCCC See datasheet (CDIP) 20LCCC: 79 mm2: 8.89 x 8.89(LCCC) 无样片... 发表于 11-02 19:02 • 435次
SE556 双精度定时器 与其它产品相比 计时器 Frequency (Max) (MHz) VCC (Min) (V) VCC (Max) (V) Iq (Typ) (uA) Rating Operating Temperature Range (C) Package Group Package Size: mm2:W x L (PKG) var link = "zh_CN_folder_p_quick_link_description_features_parametrics"; com.TI.Product.handleQuickLinks('parametric','参数变化','#parametrics',link); SE556 NA556 NE556 SA556 0.1 0.1 0.1 0.1 4.5 4.5 4.5 4.5 16 16 16 16 2000 4000 4000 4000 Military Catalog Catalog Catalog -55 to 125 -40 to 105 0 to 70 -40 to 85 CDIP PDIP SOIC PDIP SO SOIC SSOP PDIP See datasheet (CDIP) See datasheet (PDIP) 14SOIC: 52 mm2: 6 x 8.65(SOIC) See datasheet (PDIP) 14... 发表于 11-02 19:02 • 1677次
TLC556M 低功耗双路 LinCMOS TLC556系列是使用TI LinCMOS TM 工艺制造的单片时序电路,可提供与CMOS,TTL和MOS逻辑,工作频率高达2MHz。由于输入阻抗高,使用比NE556更小,更便宜的定时电容可以实现精确的时间延迟和振荡。在整个电源电压范围内功耗都很低。 与NE556类似,TLC556的触发电平约为电源电压的三分之一,而 的阈值电平约为电源电压的三分之二。可以通过使用控制电压端子来改变这些电平。当触发输入低于触发电平时,触发器置位,输出变为高电平。如果触发输入高于触发电平且阈值输入高于阈值电平,则触发器复位且输出为低电平。复位输入可以覆盖所有其他输入,并可用于启动新的时序周期。如果复位输入为低电平,则触发器复位,输出为低电平。只要输出低,就在放电端子和地之间提供低阻抗路径。 虽然CMOS输出能够吸收超过100 mA的电流并且输出电流超过10 mA,但TLC556在输出转换期间显示出大大减少的电源电流尖峰。这最大限度地减少了对NE556所需的大型去耦电容的需求。 这些设备具有内部静电放电(ESD)保护电路,可在MIL-STD-883C,方法3015下测试,防止电压高达2000 V的灾难性故障。但是,在处理这些设备时应小心谨慎。器件... 发表于 11-02 19:01 • 456次
LM555是一款高度稳定的器件,用于产生精确的时间延迟或振荡。如果需要,提供附加端子用于触发或重置。在延时工作模式下,时间由一个外部电阻和电容精确控制。对于作为振荡器的非稳态操作,可通过两个外部电阻和一个电容精确控制自由运行频率和占空比。电路可以在下降波形上触发和复位,输出电路可以提供或吸收高达200mA的电流或驱动TTL电路。 特性 SE555 /NE555的直接替换 从微秒到小时的时间 在两个Astable中运行和单稳态模式 可调节占空比 输出可以输出或吸收200 mA 输出和电源TTL兼容 温度稳定性优于0.005%/°C 正常开启和正常关闭输出 所有商标均为其各自所有者的财产。 参数 与其它产品相比 计时器 Frequency (Max) (MHz) VCC (Min) (V) VCC (Max) (V) Iq (Typ) (uA) Rating Operating Temperature Range (C) Package Group Package Size: mm2:W x L (PKG) var link = "zh_CN_folder_p_quick_link_description_features_parametrics"; com.TI.Product.handleQuickLinks('parametric','参数变化','#parametrics',link); LM555QML ... 发表于 11-02 19:01 • 289次
SE555-SP QML V 类精密定时器 SE555是一款能够产生精确时间延迟或振荡的精密定时电路。在延时或单稳态工作模式下,定时间隔由单个外部电阻和电容网络控制。在非稳态工作模式下,频率和占空比可以通过两个外部电阻和一个外部电容独立控制。 阈值和触发电平通常分别为三分之二和三分之一, of V CC 。可以通过使用控制电压端子来改变这些电平。当触发输入低于触发电平时,触发器置位,输出变高。如果触发输入高于触发电平且阈值输入高于阈值电平,则触发器复位且输出为低电平。复位(RESET)输入可以覆盖所有其他输入,并可用于启动新的时序周期。当RESET变为低电平时,触发器复位,输出变为低电平。当输出为低电平时,在放电(DISCH)和地之间提供低阻抗路径。 输出电路能够吸收或提供高达100 mA的电流。 4.5 V至16.5 V电源的工作条件。采用5 V电源时,输出电平与TTL输入兼容。 特性 从微秒到小时的时间 稳定或单稳态操作 可调节占空比 TTL兼容输出可以接收或输出高达100 mA QML-V合格,SMD 5962-98555 军用温度范围(?? 55°C至125°C °C) 耐辐射:25 kRad(Si)TID (1) (1) 辐射耐受性是基于初始设备鉴定的典型值,剂量率=... 发表于 11-02 19:01 • 1944次
SE555M 精密定时器 这些器件是精密定时电路,能够产生精确的时间延迟或振荡。在延时或单稳态工作模式下,定时间隔由单个外部电阻和电容网络控制。在a-stable工作模式下,频率和占空比可以通过两个外部电阻和一个外部电容独立控制。 阈值和触发电平通常为三分之二和三分之一,分别为V CC 。可以通过使用控制电压端子来改变这些电平。当触发输入低于触发电平时,触发器置位,输出变高。如果触发输入高于触发电平且阈值输入高于阈值电平,则触发器复位且输出为低电平。复位(RESET)输入可以覆盖所有其他输入,并可用于启动新的时序周期。当RESET变为低电平时,触发器复位,输出变为低电平。当输出为低电平时,在放电(DISCH)和地之间提供低阻抗路径。 输出电路能够吸收或提供高达200 mA的电流。工作电压指定为5 V至15 V电源。使用5 V电源时,输出电平与TTL输入兼容。 特性 从微秒到小时的时间 稳定或单稳态操作 可调节占空比 TTL兼容输出可以接收或输出高达200 mA 在符合MIL-PRF-38535的产品上,除非另有说明,否则所有参数均经过测试。在所有其他产品上,生产加工不一定包括所有参数的测试。 参数 与其它产品相比 计时器 F... 发表于 11-02 19:00 • 1319次
TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor TMP411设备是一个带有内置本地温度传感器的远程温度传感器监视器。远程温度传感器,二极管连接的晶体管通常是低成本,NPN或PNP型晶体管或二极管,是微控制器,微处理器或FPGA的组成部分。 远程精度为 1 C适用于多个设备制造商,无需校准。双线串行接口接受SMBus写字节,读字节,发送字节和接收字节命令,以设置报警阈值和读取温度数据。 TMP411器件中包含的功能包括:串联电阻取消,可编程非理想因子,可编程分辨率,可编程阈值限制,用户定义的偏移寄存器,用于最大精度,最小和最大温度监视器,宽远程温度测量范围(高达150 C),二极管故障检测和温度警报功能。 TMP411器件采用VSSOP-8和SOIC-8封装。
TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器 TMP468器件是一款使用双线制SMBus或I 2 C兼容接口的多区域高精度低功耗温度传感器。除了本地温度外,还可以同时监控多达八个连接远程二极管的温度区域。聚合系统中的温度测量可通过缩小保护频带提升性能,并且可以降低电路板复杂程度。典型用例为监测服务器和电信设备等复杂系统中不同处理器(如MCU,GPU和FPGA)的温度。该器件将诸如串联电阻抵消,可编程非理想性因子,可编程偏移和可编程温度限值等高级特性完美结合,提供了一套精度和抗扰度更高且稳健耐用的温度监控解决方案。 八个远程通道(以及本地通道)均可独立编程,设定两个在测量位置的相应温度超出对应值时触发的阈值。此外,还可通过可编程迟滞设置避免阈值持续切换。 TMP468器件可提供高测量精度(0.75 C)和测量分辨率(0.0 625 C)。该器件还支持低电压轨(1.7V至3.6V)和通用双线制接口,采用高空间利用率的小型封装(3mm 3mm或1.6mm 1.6mm),可在计算系统中轻松集成。远程结支持-55 C至+ 150 C的温度范围。