




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.从配置PROM/FLASH 读取用户数据时间:2009-02-03 来源: 作者:freehardman 点击:147 字体大小:【大 中 小】前沿在FPGA设计中,配置 FLASH (XCF00系歹U)主要的功能是存储 FPGA设计,然后在上 电之后,自动将设计装载到 FPGA当中。在有些时候,FPGA设计并未全部将配置 FLASH的 存储单元全部占用,因此,未被占用的单元就被浪费掉了。在某些应用中,用户需要在片外(FPGA外)存储自己定义的数据,这个时候就要单独挂FLASH芯片到FPGA上,这样不仅增加了设计难度(用户需要专门编
2、写存储控制接口)、增 加成本、增加布板难度、增加 FPGA管脚使用数量等,从而给设计者带来很多不便。如果用 户自定义的数据量不是很大,而且正好可以放到FLASH的未被占用的存储单元中,那么将极大减轻设计者的负担,减少成本,增加系统可靠性。下面将详细介绍如何将用户自定义数据存储到PROM/FLASH中,以及如何读取这些数据。具体实现原理要想实现将用户自定义数据写入FLASH以及从它们当中读出来,首先要明确以下几个问题:FPGA设计数据如何被写入到 FLASH当中FLASH中的数据如何被读到 FPGA当中(配置FPGA过程)理解了以上两个问题,我们就能从总体上知道是什么原理使用户数据能写入到FLA
3、SH当中,并被读出来。看 FIG1:(注:以下所有的讨论都是认为FPGA的配置模式是主一串模Figufe 7, PROM 日nd FPGA Connections with Additionil GantrolSignal在 FIG1 中,有几个关键信号:CCLK, CE/, OE_RESET/, INIT/ (INIT/ 在 FPGA上)。在主一串模式配置过程中,上电之后,由FPGA的CCLK弓|脚发出时钟,驱动FLASH的CLK,而FLASH根据CE/、OE RESET/的状态来确定是否地址增加(此 地址”是FLASH内部数据 存储单元的地址)。如果FPGA将所有的设计数据读取完毕,则停止
4、产生CCLK时钟。而CE/、OE_RESET/的状态可能在 FPGA配置完毕之后变化,使地址复位。注意,当 CCLK产生且 FLASH有数据输出时,要判断这些数据是否是设计数据。判断的方法是通过一个同步字段 来实现的。不同系列的 FPGA同步字段会有不同,比如 Virtex系列FPGA同步字段是 AA995566h。在对应FPGA的配置手册中会找到其同步字段。上述所述过程大概描述了一个FPGA的配置过程。因此,如果要想在FPGA配置成功之后,继续读取用户自定义在FLASH中的数据,就要在上述过程中做一下变动,而且不影响正常的FPGA配置。通过研究FLASH的手册,可以知道,当 CE/变高后,F
5、LASH的地址计数器就会复位, 而不再因为CLK有脉冲而地址增加。所以,当FPGA配置完毕后,设计者要阻值 CE/变高。在配置过程中,INIT/变低,表示FPGA接收的数据有 CRC校验错误,这时 FLASH的地 址计数器会清零。当OE_RESET/为低,FLASH的地址计数器复位。Tab1为OE RESET/和CE/与FLASH地址的真值表:电!- Truth tok PROM Control InputsControl Inputslnirnal Addm争审OutputsOE/ftESETCEDATAH和hIf address TC: incrementA ciiveIt君cfdress
6、 TC: do nol changeHigh-ZLOWLOWHeld resatHlgthZHighHighHld 阳setHigh-ZLowHighHeld resetHigh-Z1. TC - Count ol a&Jrg。cnunlAf. Addr巨图-目dd隹骷 ccunt.通过前面分析几个信号对 FLASH地址的影响以及 FPGA配置过程,可以有如下的方法来 实现在成功配置 FPGA之后,正确读取 FLASH中的用户自定义数据:? CE/信号脚在FPGA成功配置后,不能为高,因此将该引脚连接到一USER IO上,这样当FPGA配置成功后,该 USER IO输出低,这样CE/就不会变高
7、,从而 PROM/FLASH地址就不会复位。在我们一般的应用中,是将 FPGA的DONE引脚连 接到CE/上,这样的目的是当 FPGA成功配置后,DONE变高,从而CE/变高,这样 FLASH的地址就复位了。如果我们采用一USER IO连接到CE/上,那么这个时候,DONE脚就不能在连接到 CE/上。DONE脚此时可以只驱动 LED就可以了。注意DONE 脚的上拉电阻要保留。其实CE/也可以直接接到 GND上,但是这样FLASH一直在使能,对芯片不好,也增加了功耗。? OE_RESET/直接连接到INIT/上,同时INIT/在FPGA成功配置后,要作为一个 USER IO使用。这样一方面保证在
8、 FPGA配置过程中如果出现 CRC错误,可以再重新发起 一次配置动作;另一方面当FPGA成功配置后,INIT/成为一个USER IO,可以使该USER IO输出为高,这1 OE_RESET/为高,FLASH内部地址不会复位, FLASH处在 输出使能状态。以上两个措施保证了在 FPGA成功配置后,FLASH的地址不会清零。但是由于 FPGA成 功配置后,CCLK就停止产生,所以,尽管 FLASH地址没有被复位,但是也不会增加。还要 想办法使地址增加。在上述条件满足时,地址增加就要有时钟输入到FLASH的CLK引脚上。由于CCLK的不可控性(尽管BitGen中有一些选项可以影响 CCLK的变化
9、。我没有仔细去研究过),因此 需要有一个设计者可控的时钟信号输入到FLASH的CLK弓|脚上。当FPGA成功配置后,CCLK为3态且有一个弱的到 VCCO的上拉,因此将一个 USER IO连接到FLASH的CLK弓|脚上是 可行的。也就是说 FPGA的CCLK和一个USER IO同时都连接到 FLASH的CLK弓|脚上。这 样,设计者就可以在 FPGA成功配置后,通过控制 USER IO来产生时钟脉冲,来读取自定 义在FLASH中的数据。因为数据是串行的,而且FLASH的地址对设计者来说不可见,因此借鉴FPGA在配置时是如何确定从 FLASH读出的数据是设计数据的方法:识别同步头。因 此,在生
10、成用户自定义数据的时候,也要考虑一个有意义的同步头数据。如数据可以按照 FIG2来分布:PROM couinftsr aLslorl d MOO/Rg坦白 2: PROM Memory Map ShowingCounter Uncertainty如何生成用户数据并加入到mcs文件中,在后面有描述。Read宏单元实现从前面描述,清楚了在硬件上如何改动,使之适合在FPGA配置成功后,能读取 FLASH中的用户自定义数据。但是,如何读取、读取这个动作如何实现,还是需要专门设计一个模块才可以。FIG3是一个标准的读FLASH数据的宏单元框图:国蕤闰&PRC哂Reader Macro该宏单元实现了在 F
11、PGA成功配置后,从 FLASH中读取用户自定义数据。各引脚信号说明,见Tab2 :Table2 : Read PROM/FLASH宏单元信号描述与功能信号名IO 方 向描述clock输 入所有信号的寄存都是在clock的上升沿reset输入异步低有效复位信号。该信号将所有逻辑复位到初始状态。din/d0输 入连接到FLASH的数据输出引脚。用户数据出现在该引脚上。read输 入该信号低有效。该信号指示该宏单元从FLASH中读取下一个8bit数据。next_sync输 入该信号低有效。该信号指示该宏单元搜索存储在FLASH中的下一个同步字段。dout7:0输 出用户自定义数据会出现在该总线上。
12、该总线上是否是有效的用户数据,由data_ready来指示。当data_ready保持一个时钟周期的低电平时,表明该总线上的数据是有效的。data_ready输 出该信号低有效。当该信号持续一个时钟周期为低时,就表明dout7:0上的数据是有效的用户自定义数据。sync输 出该信号低有效。当从检测到从 FLASH中读出的数据有同步字段时,该信号变低。reset_prom输 出该信号低有效。当该宏单元被复位时,该信号就会变低。该信号连接到FLASH的CE/或OE_RESET/上。当该信号为低时,使 FLASH的地址计数器复位。cclk输该信号非FPGA引脚上那个CCLK。该信号只是模拟CCLK。
13、时钟管理在这里主要目的是产生正确的模仿CCLK的cclk。因此,需要有一个时钟使能,当该时钟使能有效时,cclk就会产生。而这个时候还要确保从FLASH中读出的数据能正确被FPGA所捕获到。在cclk的上升沿,都会有新的数据出现的 din/d0上,在cclk的下降沿,一个din 数据读使能信号有效,使数据在系统时钟clock的上升沿进入移位寄存器和比较模块。这1对于FPGA内部的寄存器来说就有足够的建立和保持时间。cclk的产生是通过对clock的分频来产生的。因为 FLASH有一个对时钟频率的要求,因此该cclk最终是多少 Hz有PROM/FLASH决定。一般是10MHz。采用SRL16 移
14、位的方法,可以产生这个cclk。SRL16移位的长度视clock的频率而定。通过这种 方法产生的cclk,避免了使用 DLL和DCM就可以达到产生同步时钟的目的。FIG4是时钟管理单元的时序图:1 ? 1 I 4 ,8 ? 6 9忖11】的户14 1E 例埼1古1|外网号1 串舞 &巾却 加3】中?霹 曳 册目甲 II i li i *i iiI ii III I一I*一i-IIiII一I 、JIMIK .Wl i1/1ii IiIIII IkI IIIIIIi I I % iiI T臼 q CCLtOtMiata Ctel纣 Of PROWdm_c4户外hU加胆 4: CIcrkMaiiDg
15、erTint Block Timing? 移位寄存器和比较器时钟管理的目的是产生合适频率且与系统时钟同步的cclk,而移位寄存器和比较器的目的就是判断从 FLASH过来的数据,是否有同步字段,如果发现同步字段,则sync变低。如果考虑设计更灵活,则可以有几个同步字段。如果用户自定义数据中含有与同步字段匹配的数据,则仍然会有sync产生,但是,只有 data_ready来指示是否是有效的用户数据。该部分的时序图如 FIG5 :* 一 SWWC刁(飞丫前1丈 SYNCndY SVHe;K-F.iijfjw5 hr泪 Register and Comparaiar BlotHt Timing? 控制
16、状态机cclk产生了,同步字段的判断也实现了,如何控制整个模块的具体动作就由控制状态机来实现。控制状决定有多少数据需要读取、何时搜索下一个同步字段、何时读取下一字节用户数据、何时复位FLASH地址等。图FIG6为控制状态机的状态转换图。P 0学犀MDAtfiTh阵就修p叫mvM ubd-fcllrda co IM ctemoulput阂rnacroSt-ate: Look-ISyncin Bitai bIriib, thfe? Dodia lor 白 &yniwcnlzdWi pattern.SEM杷 GitDiMAIn Uh露羽叫flis “优sign的Iks号 umt-ahwi (Httf
17、ivn di* FROM5闻氏胃alH四成曲ht rh后更嘉虬 力邑design俾前& h uf*-r opui. LHtwJfipuc ri!(M k打gct-tki w Ik-nA igr th” nea 总帅出匝*1 izaiMi fqhefl10文档来源为:从网络收集整理.word版本可编辑.Fgt/re 6: Controf St nte Mach ine Di 的崎 mFIG7为控制状态机的时序图:t ? 15 + i 后 了 I 8 I a I1心 I IN I口 11i7斜 臼 弓a IA2I Hi I密 6 44筠 二泅1力 说 3“好135 H :1SII r rh I I
18、 I I I I I Ir i I1 l i L JI i I iI i I L i I I i i &YTMG n-3 X bYMOn-1 X1 T - 一7-i l -1 一K -AX -飞加fl一一 T idin朝怖doulda值电通的Fa帼 7. Coniioi S1M MacTiM。Block Timingwy心通过前面原理性的描述再结合状态机状态转换图,可以很明确的知道状态机是如何工作的。在 FPGA配置完成以后,状态机由复位状态(RESET)进入寻找同步字段状态(S1),这个时候cclk是有输出的,如果没有发现同步字段,则一直维持 在寻找同步字段状态(S1)。当发现同步字段后,关
19、闭 cclk输出使能,同时进入到等待用户指令状态(S2),在该状态等待用户指令,即是否开始从 FLASH中读取数据或寻找同步字段。如果用户逻辑使能read信号,则转到得到数据状态(S3),这时打开cclk输出使能;如果想寻找下一个同步字段,则使能 next_sync ,进入寻找 同步字段状态(S1),同时cclk输出使能。(个人认为这样设计是非常合理的:即 用户数据用不同的同步字段分割成不同的数据段,这样用户就可以根据实际需要,确定读哪一段、以及该段应读多少数据,在用户逻辑里,如果有必要,应该增加一个已读数据计数器。但是这个是根据实际需要而定)在得到数据状态( S3),计数接收到数据。由于数据
20、是以位接收,以字节送出,故这个状态存在一个计数器。在该状态,存在两个不同的判断计数器值的语句,根据代码,思考一下就会明白的。当计数器值满足条件以后,就进入数据输出状态( S4)。在数据输出状态(S4)状 态,已经串并转换后的数据从 dout7:0输出,同时转到等待用户指令状态 (S2)。如何将用户定义数据加到PROM/FLASH前面所述都是已经假定用户数据已经装到了FLASH当中,现在就讲述具体怎样实现数据的装入。首先存在一个名字为 Perl的脚本文件,该脚本文件可以使用户定义数据加到PROM文件中。格式是Intel Object 和Hex格式。Perl脚本文件可以在参考设计的 /Perl_S
21、cript目录中找到。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文件里,可以使能位交换或者
22、不使能位交换,但是Intel Object文件则无此功能。由于数据顺序的颠倒,因此,可以有两种方式来处理位交换:1 .用户数据不作任何变化而附加到PROM配置数据后面。当用户数据读到 FPGA当中之后,根据实际需要,再决定是否将顺序调整过来;2 .用户数据做了位交换后再附加到PROM配置数据后面。这样用户数据读到 FPGA当中之后,就不必再做顺序调整。以上两种方法都是可取,同时采用第一种方法也不会增加额外的逻辑资源开销。在使用Perl脚本的时候,由于 Hex文件有位交换是否使能的功能,因此 -swap选项 可以on或者of,来打开位交换使能或者关闭。尽管Intel Object无此功能,但是-
23、swap选项也必须说明,尽管此时的说明是不起任何作用的。? 记录、字节技术、校验和(不知道Record具体该翻译成哪个词,这里我翻译成记录”)当将用户数据附加到 PROM文件后面的时候,需要说明许多数据域。Hex格式文件不需要附加任何数据域,但是Intel Object格式文件要附加开始字串域、字节计数域、地址域、记录类型域、校验和域、以及实际的数据。Perl文件可以自动计算这些域,并将它们加到 PROM文件当中。为使脚本文件可以正确计算这些数值,用户 数据需要以每行16字节排列。Tab3到Tab5是可被iMPACT识别的记录类型:其中00 :数据记录01 :文件记录结束(指示文件结束)04:
24、扩展的线性地址记录(提供偏移,以便来确定绝对的目的地址)校验和采用2进制和的补码方式以 16进制给出。2进制和包括字节计数值 +地址+ 记录类型+数据类型。扩展的线性地址记录定义了一个32位的线性地址。该地址加到后续的数据记录地址上,得到绝对地址。口:加 3, hip lit Typ9 000CA AAAhhh h allccStartCharacter由科6MtH 仲Rew 4 Typ0hh m 1 0日定 Byt*端 IMkfVn2 Chsraclars4 Gharaders2 CttafejclEirsSUP 10 322 Chai-acleis和。相 4- Iriput Data Tvpfl 01COFF尔性QounlRecord 1peCMcMun2 Uh利寺c忸母4 CMsc-22 Ctis radars起岫 5.- I 哗Lit 口孔* Typi 64不0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业互联网平台入侵检测系统实时监控与优化在智能制造中的应用报告
- 2025年基层医疗卫生机构信息化建设中的医疗信息化产业链协同发展策略报告
- 2025年新能源汽车充电基础设施投资策略:充电站投资效益与可持续发展报告001
- 教师招聘之《小学教师招聘》考前冲刺练习题带答案详解(达标题)
- 教师招聘之《小学教师招聘》高分题库及完整答案详解(名师系列)
- 教师招聘之《幼儿教师招聘》综合检测提分附参考答案详解【完整版】
- 教师招聘之《小学教师招聘》考前冲刺测试卷附参考答案详解【黄金题型】
- 2025年教师招聘之《小学教师招聘》试题标准卷附答案详解
- 教师招聘之《幼儿教师招聘》考前冲刺模拟题库提供答案解析附答案详解(精练)
- 教师招聘之《幼儿教师招聘》模拟题库附参考答案详解【夺分金卷】
- 网架防腐刷漆施工方案
- GSP基础知识培训课件
- GB/T 6433-2025饲料中粗脂肪的测定
- (完整版)《珠心算口诀表》
- 微粒贷逾期立案通知函
- 2025年湖北荆州石首市招考村“两委”后备干部100人历年高频重点提升(共500题)附带答案详解
- DBJ41-T 145-2015 三轴水泥土搅拌桩帷幕技术规程
- TSG07-2019锅炉安装工艺+焊接专用工艺卡+施工记录表
- 物业收费员的培训
- 总医院医共体信息化建设项目公开文件招投标书范本
- 2024年世界职业院校技能大赛高职组“声乐、器乐表演组”赛项参考试题库(含答案)
评论
0/150
提交评论