- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 搭建硬件平台(FPGA JTAG 下载电缆等) 通过FPGA的JTAG口下载码流 调试 利用系统自带的集成化逻辑分析工具 ChipScope Pro能解决许多问题 调试的重点:IP核和硬盘的读写频率要协调一致;为此要根据工作频率和硬盘设备的读写频率,准确计算/调试相应的时序参数。(如Tm, Td,Teoc) * 小结 分析设计:将整个设计划分为适当的功能模块,即多层次编程思想。 采用自下向上的设计方法:由下层模块开始,将每模块进行编码,然后将他们结合成完整的设计。 采用硬件思考方式:由于VHDL是一种硬件描述语言,一旦上电,器件内的所有信号都会开始动作,不像软件那样顺序执行。注意代码的并行性,以减小硬件延迟。 * 以上是对硬盘控制器的整体介绍,不涉及代码的具体细节,为便于理解,逻辑设计做了简化。尽管实际代码比较复杂,但其基本思想是简单的。希望大家能从整体上理解系统设计的框架和主要思路。 具体逻辑的设计需要大家在实践中积累经验。 推荐一个网址: 欢迎大家共同探讨。 * 谢谢大家! * 补充知识点 * PIO概念 Programmed Input/Output . A method of transferring data between two devices that uses the computer’s main processor as part of the data path. ATA uses PIO and defines the speed of the data transfer in terms of the PIO mode implemented. * 代码设计 顶层状态机 DMA控制器 PIO ATA控制器 DMA时序控制 FIFO 底层计数器 读写控制 线性反馈移位寄存器 底层时序控制 底层计数器 Ping-Pong控制 寄存器操作控制 IDLE 底层计数器 * 代码设计—时序控制基本思想 复位时Q7:0=0 退出复位后,当go=1时D7:0?Q7:0 之后, Q7:0在CLK的每一个上升沿执行减一操作,直到=0时计数结束,此时done信号输出一个高电平 空闲等待,直到下一次go=1条件满足,重复以上步骤 自动停止 计数器模块 * T1done T2done Teoc DIOW = (we and T1done) or (DIOW and not T2done) ________ ______/ \______ | T1 | T2 | Teoc | * PIO DIOW信号时序(简化)实现仿真 ModelSim * 代码设计—FIFO基本思想 FIFO 读操作逻辑 写操作逻辑 队列满检测 队列空检测 读写地址产生逻辑 调用模板或者单独编写 * 地址发生器--线性反馈移位寄存器 电路简单,延时小,与纯软件不同 注意与If…then Elsif语句的区别 * FIFO仿真 * * PIO写模式Ping-Pong技术 Ping-Pong技术是为了减少总线占用而发展的一种技术。 其基本思想是没必要在整个PIO传输过程中都占用总线,而在PIO传输的起始时刻IP核内部锁存数据和地址,这样在PIO传输过程中就可以释放总线。 Ping-Pong技术支持内部锁存连续两个写请求,也就是在一个写操作的过程中允许接受新的写请求,此时先将此请求锁存,等当前操作完成后再执行下一个内部锁存的请求。 * * * Ping-Pong技术仿真 代码复杂,只给出结果 * 代码设计—状态机 在DMA使能并且有DMA请求的前提下: 写状态:如果DMA发送缓冲区满则由空闲状态转向DMA状态。 读状态:如果DMA接收缓冲区未满则由空闲状态转向DMA状态。 其他情况若有PIO请求,则进入PIO模式 否则=〉空闲 高优先级 * 综合结果 占用资源 线路延迟 * 代码仿真 * * ModelSim 界面 * 代码仿真—寄存器设置 * 代码仿真—PIO写 * 代码仿真—PIO读 * 代码仿真—DMA读 * 代码仿真—DMA写 * 代码仿真调试遇到的问题举例 一、系统无输出,输出为红线(Z/X/U,STD_LOGIC类型分为0,1,Z,X,U等 ) 二、系统有输出,但结果不正确 Process (S,a0,a1,a2,a3) Begin Case S Is When “00” = y=a0; When “01” = y=a1; When “10” = y=a2; When “11” = y=a
文档评论(0)