河南大学《EDA》vhdl语言的高级使用技巧(7)
时间:2025-07-06
时间:2025-07-06
在一个process里面,只能有一个rising_edge。在多个process的通信中,同一个signal,不能同时做多个process里面的输出信号输入信号。(如果把process的处理想像成电路接线,你就会发现为什么会这样了。)
三 可编程逻辑器件的存储器结构与实现
1 FPGA芯片的存储器结构
随着通用存储器在应用系统中普遍的使用,各大可编程器件的厂商均在自己的FPGA芯片内嵌入了专用的RAM结构,按照在芯片内的分布情况可以分为分布式(Distribute) RAM和块状(Block)RAM。本文主要讨论Xilinx公司的FPGA结构,其思路、方法对其他公司的FPGA结构也适用。
(1) 块状RAM
块状RAM是分布FPGA芯片内部的嵌入式专用同步双口RAM存储单元,通常沿芯片的边缘垂直边排列如图1、图2所示,是FPGA的一个重要资源。高端FPGA的片内RAM规模越来越大,应用也越来越广泛,是SOPC(可编程片上系统)的有力硬件支持。使用片内块状 RAM可以实现单口RAM、双口RAM、同步/异步FIFO、ROM、CAM、大型查找表、数据宽度转换器、循环缓冲器和移位寄存器等常用单元模块,每种应用都支持不同的数据宽度和深度。块状RAM的性能比其他形式的RAM性能优越。又由于是专用的RAM,写入读出通路没有其他逻辑电路,而且嵌入在FPGA内部,与外挂的RAM相比,读写到片内逻辑的延时是相当小的,再加上专用RAM的双读/写同步方式,很容易达到设计的要求。块状RAM之间有专用的布线资源,当RAM容量很大时,也不会影响速度。使用块状RAM与使用外部RAM相比,可以简化印制版(PCB)的设计与制作,提高系统的稳定性[2]。
(2)分布式RAM
分布式RAM是利用可配置逻辑模块(CLB)中的查找表(LUT)设计实现的存储器资源。可编程逻辑器件底层单元一般由触发器(FF)和查找表(LUT)组成,Xilinx的底层可编程硬件资源叫SLICE,由2个FF和2个LUT组成,每个CLB模块中有两个SLICE单元,而Altera的底层可编程硬件资源叫LE,由1个FF和1个LUT组成。分布式RAM分布在每个LC中,可以将一个LC