FPGA 笔记四

FPGA 笔记四
一、ROM和RAM的区别:

转载(https://blog.csdn.net/Gdadiao123/article/details/79891791)

  • ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access
    Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。
  • RAM有两大类,一种称为静态RAM(Static
    RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。另一种称为动态RAM(Dynamic
    RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。
  • DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR
    RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。DDR RAM(Date-Rate RAM)也称作DDR
    SDRAM,这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus
    DRAM。在很多高端的显卡上,也配备了高速DDR
    RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力,RAM主要用来存放程序及程序执行过程中产生的中间数据、运算结果等。
  • ROM也有很多种,PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了,而EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢。
  • FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦出可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来
    Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。
二、FPGA中RAM IP核简介 (可通过软件进行RAM的调试)
  • data:RAM写数据端口; address:RAM读写地址端口,对于单口RAM来说,读地址和写地址共用同一组地址;

  • wren:写使能信号,高电平有效; byteena:字节使能控制,该功能屏蔽了输入数据,这样仅写入数据中指定字节,未被写入的字节保留之前写入的值。当写入数据的位宽为16位、18位、32位和36位时,M9K模块 将支 持字节使能,wren信号以及字节byteena信号一起控制RAM模块的写操作。byteena信号在RAM IP核创建过程中是可选的,可选择是否使用字节使能控制功能。

  • addressstall:地址使能控制,当addressstall信号为高电平时,有效地址时钟使能就会保持之前的地址。addressstall信号在RAM IP核创建过程中是可选的,可选择是否使用地址使 能控制功能。

  • clockena:时钟使能控制,高电平有效; rden:读使能信号,高电平有效; aclr:异步

  • 复位信号,高电平有效;

  • inclock、outclock:单口RAM端口支持输入与输出时钟模式和单时钟模式。在输入与输出
    时钟模式下,输入时钟控制存储器模块的所有输入寄存器,其中包括数据、地址、byteena、
    wren以及rden寄存器;输出时钟控制数据输出寄存器。在单时钟模式下,没有inclock信号与
    outclock信号,只有一个clock信号,可以通过单时钟以及时钟使能来控制M9K存储器模块中的 所有寄存器。

  • RAM读写时序:
    在这里插入图片描述

  • 写数据:
    在这里插入图片描述

  • 读数据:
    在这里插入图片描述

三、FIFO读写
  • FIFO一般用于不同时钟域之间的数据传输,也常用来实现不同位宽的接口的数据匹配。

  • FIFO读数据(高电平有效)

  • 在这里插入图片描述

  • FIFO写数据(高电平有效)

  • 在这里插入图片描述

  • FIFO一些常见参数:

  • FIFO的宽度:FIFO一次读写操作的数据位N;

  • FIFO的深度:FIFO可以存储多少个宽度为N位的数据。

  • 空标志:对于双时钟FIFO又分为读空标志rdempty和写空标志wrempty。FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效 数据的读出。

  • 满标志:对于双时钟FIFO又分为读满标志rdfull和写满标志wrfull。FIFO已满或将要写满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出。

  • 读时钟:读FIFO时所遵循的时钟,在每个时钟的上升沿触发。

  • 写时钟:写FIFO时所遵循的时钟,在每个时钟的上升沿触发。

  • 对于FIFO的基本知识先了解这些就足够了,可能有人会好奇为什么会有单时钟FIFO和双时钟FIFO,它们各自的用途是什么。之所以有单时钟FIFO和双时钟FIFO是因为各自的作用不同。单时钟FIFO常用于同步时钟的数据缓存,双时钟FIFO常用于跨时钟域的数据信号的传递,例如时钟域A下的数据data1传递给异步时钟域B,当data1为连续变化信号时,如果直接传递给时钟域B则可能会导致收非所送的情况,即在采集过程中会出现包括亚稳态问题在内的一系列问题,使用双时钟FIFO能够将不同时钟域中的数据同步到所需的时钟域中。

  • == 亚稳态问题补充:在数字电路中,数据在传输过程中,需要满足寄存器对建立和保持时间的要求,也就是上升沿来临之前数据就要处于稳定状态,而在时钟上升沿之后需要数据保持一段时间的稳定,这样数据才能被稳定采集。而在不同时钟域里面,不一定满足以上的条件,寄存器处于一个亚稳态的状态,数据处于不稳定状态,数据传输会出错,亚稳态也会一级一级往后传输,产生严重的错误。==

四、FPGA中ROM IP核简介
  • ROM读写时序:基本跟RAM读数据时序一样。
  • ROM初始化:存储器初始化的文件为.mif文件或者.hex文件(RAM初始化也如此需要在quartus软件上加载生成好的.mif或者.hex文件。)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
作为一名FPGA工程师,你可以通过以下方法来进行学习和实践: 1. 首先,熟悉FPGA的基础语法和概念。这包括了理解数字电路和信号处理的基础知识,以及了解FPGA代码的规范写法。你可以参考引用中提到的方法,先学习基础语法,再扎实相关知识。 2. 掌握不同的FPGA设计方式。除了使用原理图设计方式,你还可以尝试使用描述语言(如Verilog)进行设计。Verilog已经在FPGA开发和IC设计领域占据了领导地位,可以更好地满足实际项目的需求。你可以参考引用中的内容,了解Verilog的基础知识和逻辑电路的表示方式。 3. 在实践中提高设计能力。通过实际的项目设计和实现,你可以进一步提高自己的FPGA工程能力。尝试使用不同的开发工具,熟悉开发流程和操作。在实践中,你可以学习解决实际问题的方法和技巧,提高自己的设计能力。 4. 注意资源的合理使用。在FPGA设计中,要慎用%和/运算符,因为它们可能会消耗大量的资源。如果你的FPGA有内嵌的硬件乘法器或者除法器,可以使用它们来代替%,/运算符。而对于乘或除2的倍数次的操作,可以使用位移运算符来代替,这样可以减少资源的消耗。参考引用中的内容了解更多关于资源消耗的注意事项。 总结起来,作为一名FPGA工程师,你需要熟悉FPGA的基础语法和概念,掌握不同的设计方式,通过实践不断提升自己的设计能力,并注意资源的合理使用。这样,你将能够更好地进行FPGA工程师的学习和实践。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蜻蜓队长c

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

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

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

打赏作者

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

抵扣说明:

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

余额充值