欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年从配置PROMFLASH读取用户数据 .pdf

    • 资源ID:30532783       资源大小:1.08MB        全文页数:9页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年从配置PROMFLASH读取用户数据 .pdf

    从配置 PROM/FLASH读取用户数据时间 :2009-02-03 来源 : 作者 :freehardman 点击:147 字体大小 : 【大 中 小】前沿在 FPGA 设计中,配置FLASH(XCF00 系列)主要的功能是存储FPGA 设计,然后在上电之后,自动将设计装载到FPGA 当中。在有些时候,FPGA设计并未全部将配置FLASH 的存储单元全部占用,因此,未被占用的单元就被浪费掉了。在某些应用中,用户需要在片外 (FPGA 外)存储自己定义的数据,这个时候就要单独挂FLASH 芯片到 FPGA 上,这样不仅增加了设计难度(用户需要专门编写存储控制接口)、增加成本、增加布板难度、增加FPGA 管脚使用数量等,从而给设计者带来很多不便。如果用户自定义的数据量不是很大,而且正好可以放到FLASH的未被占用的存储单元中,那么将极大减轻设计者的负担,减少成本,增加系统可靠性。下面将详细介绍如何将用户自定义数据存储到PROM/FLASH 中,以及如何读取这些数据。具体实现原理要想实现将用户自定义数据写入FLASH 以及从它们当中读出来,首先要明确以下几个问题:FPGA设计数据如何被写入到FLASH 当中FLASH 中的数据如何被读到FPGA 当中(配置FPGA过程)理解了以上两个问题,我们就能从总体上知道是什么原理使用户数据能写入到FLASH 当中,并被读出来。看FIG1:(注:以下所有的讨论都是认为FPGA 的配置模式是主串模式)在 FIG1 中,有几个关键信号:CCLK,CE/,OE_RESET/,INIT/ (INIT/ 在 FPGA 上)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 在主串模式配置过程中,上电之后, 由 FPGA 的 CCLK引脚发出时钟, 驱动 FLASH 的 CLK,而 FLASH 根据 CE/、OE_RESET/的状态来确定是否地址增加(此“ 地址” 是 FLASH 内部数据存储单元的地址) 。 如果 FPGA 将所有的设计数据读取完毕,则停止产生CCLK时钟。而 CE/、OE_RESET/的状态可能在FPGA 配置完毕之后变化,使地址复位。注意,当CCLK产生且FLASH 有数据输出时,要判断这些数据是否是设计数据。判断的方法是通过一个同步字段来实现的。不同系列的FPGA 同步字段会有不同,比如Virtex 系列 FPGA 同步字段是AA995566h 。在对应 FPGA 的配置手册中会找到其同步字段。上述所述过程大概描述了一个FPGA 的配置过程。因此,如果要想在FPGA 配置成功之后,继续读取用户自定义在FLASH 中的数据,就要在上述过程中做一下变动,而且不影响正常的 FPGA 配置。通过研究 FLASH 的手册,可以知道,当CE/变高后,FLASH 的地址计数器就会复位,而不再因为CLK 有脉冲而地址增加。所以,当FPGA配置完毕后,设计者要阻值CE/变高。在配置过程中,INIT/ 变低,表示FPGA 接收的数据有CRC校验错误,这时FLASH 的地址计数器会清零。当 OE_RESET/为低,FLASH 的地址计数器复位。Tab1 为 OE_RESET/和 CE/与 FLASH 地址的真值表:通过前面分析几个信号对FLASH地址的影响以及FPGA 配置过程,可以有如下的方法来实现在成功配置FPGA 之后,正确读取FLASH 中的用户自定义数据:CE/信号脚在 FPGA 成功配置后,不能为高,因此将该引脚连接到一USER IO 上,这样当 FPGA 配置成功后,该USER IO 输出低,这样CE/就不会变高,从而PROM/FLASH 地址就不会复位。在我们一般的应用中,是将FPGA 的 DONE 引脚连接到 CE/上,这样的目的是当FPGA成功配置后, DONE 变高,从而CE/变高,这样FLASH 的地址就复位了。如果我们采用一USER IO 连接到 CE/上,那么这个时候,DONE脚就不能在连接到CE/上。 DONE 脚此时可以只驱动LED就可以了。注意 DONE脚的上拉电阻要保留。其实CE/也可以直接接到GND 上,但是这样FLASH 一直在使能,对芯片不好,也增加了功耗。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - OE_RESET/直接连接到INIT/ 上,同时 INIT/ 在 FPGA成功配置后, 要作为一个USER IO 使用。这样一方面保证在FPGA 配置过程中如果出现CRC错误,可以再重新发起一次配置动作;另一方面当FPGA 成功配置后, INIT/ 成为一个USER IO,可以使该USER IO 输出为高, 这样 OE_RESET/为高, FLASH 内部地址不会复位,FLASH 处在输出使能状态。以上两个措施保证了在FPGA 成功配置后, FLASH 的地址不会清零。但是由于FPGA 成功配置后, CCLK就停止产生,所以,尽管FLASH 地址没有被复位,但是也不会增加。还要想办法使地址增加。在上述条件满足时,地址增加就要有时钟输入到FLASH 的 CLK 引脚上。由于CCLK的不可控性(尽管BitGen 中有一些选项可以影响CCLK的变化。我没有仔细去研究过),因此需要有一个设计者可控的时钟信号输入到FLASH 的 CLK引脚上。当 FPGA成功配置后, CCLK为 3 态且有一个弱的到VCCO的上拉, 因此将一个USER IO 连接到 FLASH 的 CLK 引脚上是可行的。也就是说FPGA的 CCLK和一个 USER IO 同时都连接到FLASH的 CLK引脚上。这样,设计者就可以在FPGA 成功配置后,通过控制USER IO 来产生时钟脉冲,来读取自定义在 FLASH 中的数据。因为数据是串行的,而且FLASH 的地址对设计者来说不可见,因此借鉴 FPGA 在配置时是如何确定从FLASH读出的数据是设计数据的方法:识别同步头。因此,在生成用户自定义数据的时候,也要考虑一个有意义的同步头数据。如数据可以按照FIG2 来分布:如何生成用户数据并加入到mcs 文件中,在后面有描述。Read宏单元实现从前面描述,清楚了在硬件上如何改动,使之适合在FPGA配置成功后,能读取FLASH中的用户自定义数据。但是,如何读取、读取这个动作如何实现,还是需要专门设计一个模名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 块才可以。FIG3 是一个标准的读FLASH 数据的宏单元框图:该宏单元实现了在FPGA 成功配置后,从FLASH中读取用户自定义数据。各引脚信号说明,见 Tab2 :Table2:Read PROM/FLASH 宏单元信号描述与功能信号名IO 方向描述clock 输入所有信号的寄存都是在clock 的上升沿reset 输入异步低有效复位信号。该信号将所有逻辑复位到初始状态。din/d0 输入连接到 FLASH 的数据输出引脚。用户数据出现在该引脚上。read 输入该信号低有效。该信号指示该宏单元从FLASH 中读取下一个8bit 数据。next_sync 输入该信号低有效。该信号指示该宏单元搜索存储在FLASH 中的下一个同步字段。dout7:0 输出用户自定义数据会出现在该总线上。该总线上是否是有效的用户数据,由data_ready来指示。当 data_ready 保持一个时钟周期的低电平时,表明该总线上的数据是有效的。data_ready 输出该信号低有效。当该信号持续一个时钟周期为低时,就表明dout7:0上的数据是有效的用户自定义数据。sync 输出该信号低有效。当从检测到从FLASH 中读出的数据有同步字段时,该信号变低。reset_prom 输出该信号低有效。当该宏单元被复位时,该信号就会变低。该信号连接到FLASH 的 CE/或 OE_RESET/上。当该信号为低时,使FLASH 的地址计数器复位。cclk 输该信号非 FPGA 引脚上那个CCLK。该信号只是模拟CCLK。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 出下面详细介绍该宏单元是如何被设计以及如何工作的。时钟管理在这里主要目的是产生正确的模仿CCLK的 cclk。因此,需要有一个时钟使能,当该时钟使能有效时,cclk 就会产生。而这个时候还要确保从FLASH 中读出的数据能正确被 FPGA所捕获到。在 cclk 的上升沿, 都会有新的数据出现的din/d0 上,在 cclk 的下降沿, 一个 din数据读使能信号有效,使数据在系统时钟clock 的上升沿进入移位寄存器和比较模块。这样对于FPGA 内部的寄存器来说就有足够的建立和保持时间。cclk 的产生是通过对clock 的分频来产生的。因为FLASH 有一个对时钟频率的要求,因此该 cclk 最终是多少Hz 有 PROM/FLASH 决定。一般是 10MHz。 采用 SRL16移位的方法, 可以产生这个cclk。SRL16 移位的长度视clock 的频率而定。 通过这种方法产生的cclk,避免了使用DLL 和 DCM 就可以达到产生同步时钟的目的。FIG4是时钟管理单元的时序图:移位寄存器和比较器时钟管理的目的是产生合适频率且与系统时钟同步的cclk,而移位寄存器和比较器的目的就是判断从FLASH 过来的数据,是否有同步字段,如果发现同步字段,则 sync 变低。 如果考虑设计更灵活,则可以有几个同步字段。如果用户自定义数据中含有与同步字段匹配的数据,则仍然会有sync 产生,但是,只有data_ready来指示是否是有效的用户数据。该部分的时序图如FIG5:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - 控制状态机cclk 产生了,同步字段的判断也实现了,如何控制整个模块的具体动作就由控制状态机来实现。控制状决定有多少数据需要读取、何时搜索下一个同步字段、何时读取下一字节用户数据、何时复位FLASH 地址等。图FIG6 为控制状态机的状态转换图。FIG7 为控制状态机的时序图:通过前面原理性的描述再结合状态机状态转换图,可以很明确的知道状态机是如何工作的。在FPGA 配置完成以后,状态机由复位状态(RESET)进入寻找同步字段状态( S1),这个时候cclk 是有输出的,如果没有发现同步字段,则一直维持在寻找同步字段状态(S1)。当发现同步字段后,关闭cclk 输出使能,同时进入到等待用户指令状态(S2),在该状态等待用户指令,即是否开始从FLASH 中读取数据或寻找同步字段。如果用户逻辑使能read 信号,则转到得到数据状态(S3),这名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 时打开 cclk 输出使能;如果想寻找下一个同步字段,则使能next_sync ,进入寻找同步字段状态(S1),同时 cclk 输出使能。(个人认为这样设计是非常合理的:即用户数据用不同的同步字段分割成不同的数据段,这样用户就可以根据实际需要,确定读哪一段、以及该段应读多少数据,在用户逻辑里,如果有必要,应该增加一个已读数据计数器。但是这个是根据实际需要而定)在得到数据状态(S3),计数接收到数据。由于数据是以位接收,以字节送出,故这个状态存在一个计数器。在该状态,存在两个不同的判断计数器值的语句,根据代码,思考一下就会明白的。当计数器值满足条件以后,就进入数据输出状态(S4)。在数据输出状态(S4)状态,已经串并转换后的数据从dout7:0输出,同时转到等待用户指令状态(S2)。如何将用户定义数据加到PROM/FLASH前面所述都是已经假定用户数据已经装到了FLASH 当中,现在就讲述具体怎样实现数据的装入。首先存在一个名字为Perl 的脚本文件, 该脚本文件可以使用户定义数据加到PROM文件中。格式是Intel Object和 Hex 格式。Perl 脚本文件可以在参考设计的/Perl_Script目录中找到。Perl 脚本文件不支持Motorola EXORmacs和 TEKTRONIX TEK 两种文件格式。为了详细解释这个脚本文件做了什么以及其如何工作,因此有必要详细PROM 文件的格式。将分 3 部分来详细描述PROM 文件的格式。位交换很好理解位交换。在Intel Object和 Hex 格式文件里的数据的顺序和数据从FLASH中读到 FPGA 当中后的顺序是相反的。也就是说在Intel Object和 Hex 文件中的 MSB是 FPGA 当中的 LSB,Intel Object和 Hex 文件中的LSB,在 FPGA当中是 MSB。就是顺序颠倒了。在 Hex 文件里,可以使能位交换或者不使能位交换,但是Intel Object文件则无此功能。由于数据顺序的颠倒,因此,可以有两种方式来处理位交换:1 用户数据不作任何变化而附加到PROM 配置数据后面。当用户数据读到FPGA当中之后,根据实际需要,再决定是否将顺序调整过来;2 用户数据做了位交换后再附加到PROM 配置数据后面。 这样用户数据读到FPGA当中之后,就不必再做顺序调整。以上两种方法都是可取,同时采用第一种方法也不会增加额外的逻辑资源开销。在使用 Perl 脚本的时候,由于Hex 文件有位交换是否使能的功能,因此-swap 选项可以 on 或者 off,来打开位交换使能或者关闭。尽管Intel Object无此功能,但是-swap 选项也必须说明,尽管此时的说明是不起任何作用的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 记录、字节技术、校验和(不知道Record 具体该翻译成哪个词,这里我翻译成“ 记录” )当将用户数据附加到PROM 文件后面的时候,需要说明许多数据域。Hex 格式文件不需要附加任何数据域,但是Intel Object格式文件要附加开始字串域、字节计数域、地址域、记录类型域、校验和域、以及实际的数据。Perl 文件可以自动计算这些域,并将它们加到PROM 文件当中。为使脚本文件可以正确计算这些数值,用户数据需要以每行16 字节排列。Tab3 到 Tab5 是可被 iMPACT 识别的记录类型:其中00:数据记录01:文件记录结束(指示文件结束)04:扩展的线性地址记录(提供偏移,以便来确定绝对的目的地址)校验和采用2 进制和的补码方式以16 进制给出。 2 进制和包括字节计数值+ 地址记录类型数据类型。扩展的线性地址记录定义了一个32 位的线性地址。 该地址加到后续的数据记录地址上,得到绝对地址。PROM 大小FLASH 是有大小限制的。因此要考虑可装到FLASH 中的用户数据的大小。FPGA 设计部分所占的FLASH 的空间可以从对应FPGA 的 datasheet 上查到。FPGA 设计同步字段用户数据,这三者所占的空间要小于FLASH 的容量。注:在参考设计的/Perl_Script目录下有个readme.txt文件。这个文件里详细说明了如何使用Perl 脚本。参考设计在附件的压缩文件里有参考设计。这里简单介绍一下参考设计。FIG9 是参考设计的框图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 从 FLASH 中读到的数据在LCD 上显示。 LCD 的驱动有PicoBlaze 实现。其他实现方法前面讲的是在主串模式下从FLASH 中读用户数据。 当然也可以采用SelectMap 模式以并行方式从FLASH 中读取用户数据。在设计方法与前述无太大区别,只是采用SelectMap方式后,数据为并行方式,少了串并转换以及bit 计数。在同步字段问题上,如果用户数据分为几个不同部分,可以采用所有同步字段都相同以及同步字段不同的方式。两者各有优缺点。如果同步字段都相同,就不清楚当前所读的数据是属于哪一段; 如果同步字段不同,可以清楚当天所读数据属于哪个部分,但是存在同步字段更新和存储的问题。很好理解,不再赘述。说明本文档全部内容完全来自于Xilinx XAPP694 文档。参考设计也完全来自Xilinx 的XAPP694.zip 。由于时间和个人能力原因,肯定存在翻译和理解有偏差的地方,欢迎大家指正。有部分地方存在语句不通顺及错别字,也请大家海涵。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -

    注意事项

    本文(2022年从配置PROMFLASH读取用户数据 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开