在线刊号(2278-8875)印刷版(2320-3765)
希尔帕饶1, Arati.S.Phadke2
|
有关文章载于Pubmed,谷歌学者 |
更多相关文章请访问国际电气、电子和仪器工程高级研究杂志
随着处理器和内存性能之间的不平衡日益加剧,优化内存控制器的特性以获得内存子系统的最大性能变得越来越重要。随着系统带宽的不断增加,内存技术已经为更高的速度和性能进行了优化。内存延迟和带宽的改进没有跟上指令执行时间的减少。缓存已经被广泛用于弥补这种不匹配,但一些应用程序没有有效地使用缓存。因此,内存访问时间一直是限制系统性能的一个障碍。这个问题可以通过设计内存控制器来解决。本文主要围绕着实现和测试兼容高级微控制器总线架构(AMBA)的内存控制器作为高级高性能总线(AHB)的从机。整个设计使用Verilog捕获,使用Xilinx编译器配置到属于Spartan 3A和Spartan 3AN家族的FPGA目标设备,并使用模型Sim卡。然后将编译后的结果位文件下载到TKB3S板。FPGA板连接到ADM的LG320/LGLITE集成逻辑分析仪和模式发生器,用于测试和验证设计。
关键字 |
AMBA规范,AHB从机,内存控制器,Verilog |
介绍 |
自20世纪80年代以来,微处理器的性能以每年60%的速度提高。相比之下,延迟每年仅提高7%,带宽每年仅提高15-20%。结果是内存访问的相对性能影响继续增长。此外,对内存带宽的需求也成比例地增长(甚至可能是超线性增长)。这些趋势使得有效利用现代微处理器的巨大处理能力变得越来越困难。 |
因此,内存控制器被构建来攻击这些缺点。它提供了对片外存储器的高带宽和低延迟访问。内存控制器是一个数字电路,它管理进出主存储器的数据流。它可以是一个单独的芯片,也可以集成到系统芯片组中。通用内存控制器的前端缓冲请求和响应,并提供与系统其余部分的接口。后端提供指向目标内存的接口。 |
AMBA是一个开放的规范,它规定了对片上系统(SoC)架构[6]进行排序的功能块的管理策略。它是一种高速、高带宽总线,支持多主总线管理,以最大限度地发挥系统性能。AMBA规范能够在死时间内最大限度地利用系统总线带宽。AHB作为高性能的系统骨干总线。AHB支持处理器、片上存储器和片外外部存储器接口与低功耗外围宏单元功能的有效连接。AHB还指定用于确保使用综合和自动化测试技术[2]在有效的设计流程中易于使用。 |
内存控制器兼容高级高性能总线(AHB),因此被称为“AHB- mc”。它是由ARM有限公司开发、测试和授权的。AHB-MC的可交付成果清单如下: |
遵守AMBA AHB协议 |
综合脚本和时间约束文档的可用性 |
可合成的VHDL/Verilog RTL源代码 |
支持SRAM、ROM、Flash等多种不同类型的存储设备 |
提供测试平台和验证向量。 |
amba-ahb架构 |
AHB- mc主要由五个模块组成:AHB从接口、配置接口、外部存储器接口、存储器系统和数据缓冲区[1]。图1显示了AHB-MC的架构。 |
A. AHB从接口 |
AHB从接口[4]将传入的AHB传输转换为AHB- mc内部使用的协议。由于内部互连的设计,在接口上做了一些优化,以提高性能。它是一个完全验证的组件,确保它遵守AHB协议和互连使用的内部协议。 |
B.配置接口 |
内部内存控制器有一个APB配置端口。AHB配置端口通过AHB到APB网桥映射到它。配置接口的主要功能是根据从AHB到APB桥接的命令更改某些配置寄存器,将配置端口的AHB传输转换为配置接口[3]所需的APB传输。它还为数据缓冲区提供读写使能信号。 |
C.外部存储器接口 |
外部内存[4]通过命令FIFO向内存发出命令,并控制这些命令的周期计时。它生成1)内存库选择和2)内存写控制信号。 |
1)内存库选择 |
AHB-MC有四个内存库,由XCSN信号选择。XCSN芯片选择信号由有效地址控制传输,并采用系统内存映射模式。由于系统会在系统启动后改变内存映射,所以AHB-MC被设计为支持重映射信号,该信号用于提供不同的内存映射[7]。因此,在重新映射系统内存之前,位于0x3000 0000的引导ROM也会映射到0x0000 0000的基址。XCSN[4]的输入与生成值之间的关系如表I所示。 |
2)内存写控制 |
外部存储器控制XWEN进行字(32位)、半字(16位)和字节(8位)量的写入。外部内存使用hsize[1:0]和haddr[1:0]来选择每次写入内存的宽度和顺序。表II显示了XWEN与AHB总线输入的关系。 |
D.记忆系统 |
在ARM架构中,指令都是32位的,而外部ROM和SRAM中的指令是8位的。因此ROM和SRAM的最低两个地址不连接到外部地址总线。此外,为了支持字节写入,SRAM需要被分离为四个独立的bank或具有一个字节写入启用信号。基本内存系统架构如图2所示。 |
AHB- mc有两个时钟域[3]:AHB时钟域(hclk)和外部内存时钟域(mclk)。异步FIFO用于两个时钟域之间作为数据缓冲区。异步时钟的主要好处是系统性能可以最大化,同时以固定的系统频率运行内存接口。此外,在睡眠模式下,当系统不需要做很多工作时,可以降低频率以降低功耗。 |
E.数据缓冲区 |
在时钟域之间传递数据的最流行的方法之一是使用FIFO[5]。双端口内存用于FIFO存储。一个端口由发送方控制,发送方将数据以每个写时钟一个数据字(或串行应用程序一个数据位)的速度放入内存。另一个端口由接收器控制,它从内存中取出数据,每个读取时钟一个数据字。两个控制信号用于指示FIFO是空的、满的或部分满的。 |
综合与仿真结果 |
AHB-MC的架构如图1所示,可以用图3所示的框图形式表示。还指出了系统的总体输入和输出。 |
在Verilog中使用Xilinx ISE 10.1工具对AHB-MC模块的功能进行测试,并使用ModelSim 6.2进行仿真。在本设计的实现过程中遵循以下步骤:代码生成、仿真、综合、功率分析、RTL原理图、翻译、映射、放置和路由,最后配置到目标设备xc3s50a-4-tq144。 |
AHB-MC的RTL Viewer如图4所示。从该图中,可以观察到在两个时钟域之间使用异步fifo作为数据缓冲区。 |
对于属于Spartan 3A和Spartan 3AN家族的目标设备XC3S50A,设备利用率汇总如表III所示。 |
使用Xilinx的XPower Analyzer对AHB-MC进行功率分析。表IV显示的功率报告表明,AHB - MC耗散的总功率为15mW。 |
速度等级为-4的设备定时摘要如表V所示。 |
图5显示了从ROM读取零等待状态的模拟波形。cmd_in(10-表示ROM读操作)注册在clk (AHB总线时钟)的下降边缘,之后rd_fifo_rden(读FIFO读使能)信号变高。然后读取的数据到达位于clk下降沿的data_out (AHB数据总线)。以零状态写入外部RAM也如图5所示。当cmd_设置为00时,将启动对RAM的写操作。然后地址被发送到AHB地址总线,wr_fifo_rden(写FIFO读使能)信号变高,使data_in (AHB输入数据总线)的数据存储在RAM中。sel_in[2]输入确保data_out[32]输出通道化到TKB3S FPGA板的8个LED输出。 |
在完成RTL编码和仿真、逻辑综合、放置和布线设计之后,下一步是测试和验证芯片,看看它是否按照设计运行。由于设计是完全数字化的,因此使用ADM的LG320/LGLITE集成逻辑分析器和模式生成器测试和验证FPGA目标。Pattern Generator板允许用户向被测设备(DUT)提供自定义刺激(测试输入),即xc3s50a-4-tq144芯片。逻辑分析器板允许用户分析DUT由于刺激而产生的输出。 |
图6显示了逻辑分析器波形,表明模块按设计工作。结果,即状态或定时数据的格式类似于示波器显示。 |
结论 |
读写操作是在从外部ROM到外部RAM的零等待状态下完成的,写操作是在零等待状态下完成的。 |
随着系统频率的增加,由于等待状态的插入,很难在一个时钟周期内完成地址解码和内存访问操作。但是插入等待状态的方法会导致系统性能的急剧下降。因此,本文提出了爆发法来解决这一问题。当一个爆发的第一个节拍被接受时,它包含关于剩余节拍的数据。例如,当AHB-MC获得读突发的第一个节拍时,完成传输所需的所有数据都可以从内存中读取并恢复到读数据FIFO中。所以第一次传输在数据返回之前有一些延迟。但是突发的后续节拍可以有更少的延迟,因为它们需要的数据可能已经在FIFO中准备好了。 |
由于不断增加的器件数量和时钟速率,功耗正在成为高性能微处理器设计的限制因素。AHB-MC提出的架构还旨在优化功率。其功耗为15mW,最大频率为114.705MHz。 |
逻辑分析器和模式生成器包提供100 KHz到100 MHz的时钟频率,用于分析和调试目标设备。工程师可以利用在产品设计阶段完成的工作,简化硬件测试环境,从而提供完整的测试覆盖和出色的调试能力。 |
参考文献 |
|