基于FPGA的mif文件创建与使用

发布者:电子思维最新更新时间:2008-11-12 来源: 中电网关键字:FPGA  ROM  mif 手机看文章 扫描二维码
随时随地手机看文章

  1 引言

  在一些需要特殊运算的应用电路中,只读存储器ROM是关键元件,设计人员通常利用ROM创建各种查找表,从而简化电路设计,提高电路的处理速度和稳定性。FPGA是基于SRAM的可编程器件。掉电后FPGA上的配置信息将全部丢失,所以由FPGA构造的数字系统在每次上电后要依赖于外部存储器来主动配置或在线被动配置。真正意义上的ROM应具有掉电后信息不丢失的特性,因此利用FPGA实现的ROM只能认为器件处于用户状态时具备ROM功能。使用时不必要刻意划分,而ROM单元的初始化则是设计人员必须面对的问题。本文讨论FPGA的ROM初始化问题,详细介绍mit文件的创建与使用。

  2 基于FPGA的ROM的实现

  基于MAX+PLUSⅡ软件平台,FPGA可编程器件实现ROM功能比较简单。只需运行MAX+PLUSⅡ,选择图形输入,在新建页的空白处双击并在弹出的对话框中选择d:\maxplus2\max2lib\mega_lpm,调用软件提供的参数可调库(mega_lpm),找出参数化ROM宏模块(lpm_rom),如图1所示。表1列出lpm_ROM宏模块的端口及参数设置。

  基于FPGA的mif文件创建与使用

基于FPGA的mif文件创建与使用

  根据需要选择必要的Address[]、q[]两个端口创建加法运算的查找表。引入lpm_ROM宏模块后,一定要把LPM_ADDRESS_CONTROL设置为″UNREGISTERED″,否则编译报错。本系统设计选用了Altera公司的FLEX10K系列的FPGA(EPF10K10LC84-4),其模块结构如图2所示。

  基于FPGA的mif文件创建与使用

3 lpm_ROM初始化及mif文件

  引入lpm_ROM宏模块后,开始ROM的初始化,这是运用lpm_ROM宏模块做为系统开发的关键。ROM初始化就是要在对应的地址赋初始值以实现查找表的功能。在系统编译之前一定要先设置LPM_FILE参数。实际上就是要加入一个mif文件或hex文件。以下详细讨论在MAX+PLUSⅡ环境下mif文件的创建和使用。

  3.1 mif文件的格式及创建

  3.1.1 mif文件格式

  mif文件是在编译和仿真过程中作为存储器(ROM或RAM)初始化输入的文件,即memory initialization file。mif文件格式为:

基于FPGA的mif文件创建与使用

3.1.2 mif文件创建

  mif文件的创建很简单,主要有两种方法,一种是在MAX+PLUSⅡ环境下,新建文件,选文本输入,保存为mif文件。另一种方法是建立一个txt文件,然后将扩展名改成mif即可。

  3.2 mif文件的使用

  依上述方法创建的mif文件只是一个空文件,在lpm_ROM宏模块的LPM_FILE中引入这样的文件,仅仅能帮助lpm_ROM宏模块通过编译并把所有的存储单元初始化为零。且在编译出现:Warning:Can't find data in initial memory content[MIF/HEX]file。

  mif文件的格式是固定的,对于前4行(DEPTH,WIDTH,ADDRESS_RADIX,DATA_RADIX),前2个参数应与lpm_ROM宏模块LPM_WIDTHAD和LPM_WIDTH相关联,后2个参数为了方便一般设置为DEC(十进制)。关键是文件内容的begin与end之间的部分。mif文件的使用就是修改begin与end之间的内容。主要有两种修改方法。

  3.2.1 mif文件的修改方法1

  mif文件的使用,即修改begin与end之间的内容,最常用的就是高级语言法。本文借助实例给以说明,并给出相应的m(Matlab)语言程序。

  设计要求:8位地址输入,8位数据输出,输出数等于地址高4位对应的数加低4位对应的数,即实现1个4位二进制加法的查找表。这里只用到lpm_ROM宏模块的Address[]、q []两个端口。lpm_ROM宏模块及mif文件格式如图3所示。

  基于FPGA的mif文件创建与使用

采用MATLAB语言产生含有begin与end之间内容的txt文件,M文件的内容为:

基于FPGA的mif文件创建与使用

保存并运行,然后打开aaa.txt文件(默认路径C:\MATLAB701\aaa.txt),拷贝到mif文件的begin与end之间,即完成了对该文件的修改。使用高级语言修改mif文件速度快,准确度高且能实现复杂运算。适用于数据较多的场合。

  3.2.2 mif文件的修改方法2

  mif文件的修改方法2是在MAX+PLUSⅡ环境下,直接修改lpm_ROM存储器的各存储单元的内容。步骤如下:先引入lpm_ROM宏模块,新建aa.mif文件并加载到LPM_FILE中,编译完成后,波形编辑,然后仿真。此时MAX+PLUSⅡ会增加一个initialize菜单,点击initialize->initialize memory…,即可在弹出的对话框中编辑存储器各单元内容,如图4所示。

  基于FPGA的mif文件创建与使用

  各存储单元输入后,点击Export File…,在弹出的对话框中确定要输出的mif文件名,即完成了对mif文件的修改。这种方法适合数据量较小的场合,比较简单直观。

  以四位二进制加法查找表为例,分别采用以上两种方法对mif文件进行修改,仿真如下图5所示。

  基于FPGA的mif文件创建与使用

  仿真显示,两种方式下均正确实现了四位二进制加法查找表。

  4 结束语

  本文详细讨论了基于FPGA的mif文件创建与使用,对于mif文件创建与使用均给出了两种可行性的方法。mif文件具有固定格式,而对mif文件使用主要就是对mif。文件begin与end之间的内容进行修改。本文以四位二进制加法查找表的实现为例,给出了m(Matlab)语言源程序。

关键字:FPGA  ROM  mif 引用地址:基于FPGA的mif文件创建与使用

上一篇:基于FPGA的智能温度采集控制器
下一篇:采用FPGA来实现自适应波束形成算法

推荐阅读最新更新时间:2024-05-02 20:43

ARM中断向量表重定位到片外RAM方法
由于ARM CPU产生中断或者异常后,PC指针自动跳转到0x00地址执行(同时执行一些CPSR寄存器的保存、运行模式的转换等),所以要在0x00地址处存放中断向量表。而如果我们想将中断向量表重定位到片外ram的 话, 有2中方法: 1、启用MMU 将片外RAM空间隐射到0x00处 2、在0x00(片内RAM)地址处存放一份和片外RAM一模一样的中断向量表 标准做法是将程序存放在NAND FLASH里面,S3C2440 CPU启动后,会将程序复制到片内RAM里面,此时中断向量表也复制到了IRAM里 3、有部分CPU支持设置中断向量表的寄存器 这样也可以实现重定位
[单片机]
gcc代码反汇编查看内存分布[2]: arm-linux-gcc
arm-none-linux-gnueabi-gcc -v gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) 重点: 代码中的内存分配, 地址从低到高: 代码段(RO, 保存函数代码) -- 只读数据段(RO, 保存常量) -- 数据段(RW, 已初始化并且初始值不为0的全局变量和静态变量) -- bss段(RW, 未初始化或者初始化为0的全局变量和静态变量). 程序运行起来之后, 堆区和栈区的变量地址是动态分配的. 可以看出arm-none-linux-gnueabi-gcc编译和gcc编译结果是类似的. #include stdio.h #include s
[单片机]
Intel的FPGA数据中心玩法
数据中心的新时代 正如当初2015年Intel以167亿美元收购Altera时所承诺的,会给数据中心带来突破,2018年4月12日,新的Intel可编程逻辑部门交出了一份引人注目的答卷,而且是以一种100%的Intel style——携手OEM合作伙伴。戴尔和富士通宣布在其服务器中采用Intel的基于Arria 10 GX FPGA的可编程加速卡(PAC)。 Intel可编程解决方案事业部亚太区市场拓展经理刘斌 “我们希望后续还会有其他主流的OEM厂商向大家做这样的公布,请拭目以待,应该会非常快”, Intel可编程解决方案事业部亚太区市场拓展经理刘斌说。显然OEM伙伴的纷纷支持,是FPGA在数据中心的加速成为主流
[嵌入式]
Intel的<font color='red'>FPGA</font>数据中心玩法
基于CPLD在臭氧发生器供电电源中的应用
  臭氧被喻为“绿色”消毒产品,在国内外得到广泛应用。近年来,臭氧技术作为环保产业的重要组成部分,受到越来越多人的重视。相关产品已从饮用水处理系统拓展到污水处理、空气净化、家庭环境污染防治、医疗保健等领域。   臭氧发生器供电电源是臭氧发生器的重要组成部分,供电电源的电压、频率和波形是影响臭氧发生器效率的重要因素。发生器的结构、气源和冷却系统确定后,电源系统的性能与品质就成为影响发生器效率的关键。上世纪80年代后,半导体器件的发展使臭氧电源发生质的变化,逆变式电源成为臭氧发生电源的主要形式。在该类电源中,用整流器将工频交流电整流成直流电,经逆变电路转换为单相中高频交变电,再经中高频升压变压器升压至发生器放电所需的电压。与工频供电
[嵌入式]
基于CPLD在臭氧发生器供电电源中的应用
目标FPGA!TI推出66AK2L06多核DSP
日前,DSP领军者TI推出其最新基于KeyStone架构的66系列DSP处理器66AK2L06。66AK2L06 SoC集成了JESD204B接口标准,让总体电路板封装尺寸实现了高达66%的缩减。该集成也可帮助航空电子、防御系统、医疗以及测试与测量等市场领域的用户开发出具有更高性能同时能耗减少高达50% 的产品。此外,开发人员还可从TI数字信号处理器 (DSP)的可编程性与多个高速ADC、DAC和AFE的预验证中受益。凭借多核软件开发套件 (MCSDK) 与射频软件开发套件 (RFSDK), 66AK2L06 SoC进一步实现了TI的系统级解决方案,从而加快了产品上市的进程。 取代FPGA 以前做数据转换时
[嵌入式]
目标<font color='red'>FPGA</font>!TI推出66AK2L06多核DSP
在Matlab中实现FPGA硬件设计
摘要:System Generator for DSP是Xilinx公司开发的基于Matlab的DSP开发工具同时也是一个基于FPGA的信号处理建模和设计工具。文章介绍了在Matlab中使用System Generator for DSP实现FPGA硬件设计的方法,同时给出了一个应用实例。 关键词:Matlab;FPGA;System Generator;DSP 近年来,在数字通信、网络、视频和图像处理领域,FPGA已经成为高性能数字信号处理系统的关键元件。FPGA的逻辑结构不仅包括查找表、寄存器、多路复用器、存储器,而且还有快速加法器、乘法器和I/O处理专用电路。FPGA具有实现高性能并行算法的能力, 是构成高性能可定
[半导体设计/制造]
内存涨价不停,国家发改委将会继续约谈三星
凭借内存疯狂涨价之势,三星去年是大赚特赚,旗下利润营收一度创了新纪录,不过他们烦心事的也随之而来。 据证券时报报道称,目前,全球内存市场被国际巨头三星、海力士以及美光垄断,三家公司的内存市场占有率合计超过90%,而今年上半年内存价格丝毫没有下降的趋势。 由于汇率持续升值、原物料及人工成本的持续上涨,最近全球电阻第一大厂国巨上调电阻价格,而这也被看作是内存继续上涨的信号,而内存价格的持续上涨,国内终端厂商的成本压力陡然增加。 报道中提到,国家发改委将会继续约谈三星,因为现在的内存市场寡头垄断格局已经形成,下游厂商话语权并不大,所以这就形成了一定意义上的垄断,所以不断去约谈就很有必要。 此外,有消息人士还向证卷时报透露
[嵌入式]
FPGA在数字式频分多路副载波解调器中的应用
    摘要: 提出了一种基于FPGA的数字式频分多路遥测系统副载波解调器的设计方案。详细论述了如何利用FPGA的特点来解决多路调频信号的解调问题。这种解调器容易和计算机相结合形成数字式FM-FM遥测数据处理系统,以适应现代遥测技术的发展需要。     关键词: FPGA 遥测 时分复用 解调器 随着大规模集成电路技术和微型计算机技术的飞速发展,计算机化已经成为遥测技术发展的方向和特征。传统的模拟式频分多路遥测系统已越来越无法适应现代遥测技术的发展。因为它具以下致命的缺点:(1)解调输出的模拟信号无法直接供计算机处理和分析;(2)系统参数一旦设定,就无法改变,系统灵活性差。为了克服以上缺点,有必要对模拟式频分
[半导体设计/制造]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved