DDR2 RAM 设计 try2

这个东西真的尝试了挺久的了,大概的资料也都了解了,主要难点在于把时序写对,快熄灯了,就先记录一下核心的一些东西 时序 这些时序都来自于官方文档UG586 1.命令信号 (这里就是要注意只有在app_rdy和app_en都为高电平的时候命令才会被接受) 2.写时序 (输入的信号有app_cmd\app_addr\app_en\app_rdy\app_wdf_data\app_wdf_wren\app_wdf_end) 3.读时序 (输入的信号有app_cmd\app_addr\app_en\app_rdy\app_rd_data\app_rd_data_valid) 接口设计 连接外部…

物联网技术报告-wifi控制宿舍开光灯

介绍 物联网技术这门课需要一个关于wifi或蓝牙的介绍ppt,我打算把之前大一在宿舍弄的wifi控制宿舍开光灯的东西写个报告 准备材料: Arduino Uno x1 ESP8266 x1 面包板 x1 杜邦线 若干 过程 [2019/11/9] 把原来的东西搞回起来 参考文献 ESP8266 AT 指令集…

编译原理-从NFA到DFA

进度 [已完成] [2019/11/4]今天弄了一天,大体弄出来了,待解决的问题是有些边在合并NFA结点的过程中丢失了,明天再看看吧 轮子哥亲自回复我了!(可是我还是没搞懂这个方法 (现在搞懂了 先看轮子哥推荐的这本书吧编译原理及实践 [2019/11/11]经过重构后,正确的生成了图例的DFA!!!真的硬核,难点我觉得在于理清每个处理逻辑,然后大量使用单步调试来debug…

编译原理-从ε-NFA到NFA

依然是参考轮子哥的教程 看懂这些原理上手做就是,半天就弄好了。 遇到的问题 我使用多个列表来存储访问同一对象的指针,在释放内存的时候会有重复释放的问题。 解决办法 我的解决办法是判断这个对象里面的一些值是否是合理的值,是则代表该对象未被释放,释放之,否则忽略。应该属于奇淫技巧 网络上的方法是先设置一个对象的指针,然后所有要多重使用的指针都指向这个值,下次有机会试试…

编译原理-从AST到ε-NFA:Thompson构造法

就是一个简单的转换过程,有点像利用栈实现的四则运算器。 从之前的AST里前序遍历得到逆波兰式,然后利用栈来建立一个单向图。 主要参考轮子哥的教程 (进去第二个) 理解了之后还是比较容易实现的,定义好数据结构之后直接照着图意思写就好,我是这样定义数据结构的 有一点要注意,用Thompson构造法的时候一个结点最多就只有两个出边,于是数据结构里只需要把每个结点的边数弄为两条,不需要考虑动态分配多条边(之前在这里考虑了很久) 进度 [已完成]…

DDR RAM IP使用及封装

Xilinx 提供了一个IP核来访问DDR RAM,叫做Memory Interface Generator (MIG) 。 这个IP核干的事情是把底层的引脚、不同芯片之类的东西抽象出来,统一用它的一套信号来管理。 这几天都在弄这个东西,看了n个例子之后觉得难点在于对具体要做的事情把这个IP核封装起来。 我想要做一个和板子上的Block Ram 一样简单易用的存储接口: 重点在于设计一个状态机,把接口进来的信号换成这个IP核接受的信号,最后操作这个叫做DDR RAM的芯片。 硬件设计真的和软件设计有挺多区别的。 进度 今天晚上弄了一个,vivado的提示是布线有问题,可是我找不到哪有问题 [2019/10/29] -已解决 这个DDR RAM 是一个在FPGA芯片以外的芯片。FPGA芯片想和它交流的话,需要引脚来和它连接,昨天晚上弄的时候把这些引脚封装起来了,导致FPGA芯片无法和这个DDR RAM芯片交流,于是就报错了 [2019/10/30] 今天遇到一个问题是Debug Core 添加了,却没被检测到 今天遇到的另外一个问题是无法仿真…

编译原理-从正则表达式到AST

就是一个建树的过程。 这个核心算法就是 调度场算法 这里我觉得比较难理解的是 什么是优先级 每个运算符之间优先级关系 比较优先级后的操作。 搞懂这几个,这部分程序就难度不大了。 我是从邓俊辉老师的那本《数据结构(C++语言版)》上理解了这个算法(p95),感谢他。 下面是这个程序的展示,可以把正则表达式生成AST树,并且按层输出,简单的画出节点之间的关系 [update 2019/11/2] 参考 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——2 构造抽象语法树 Compilers: Principles, Techniques, and Tools (2nd Edition) -(美)Alfred V. Aho Monica S. Lam Ravi Sethi Jeffrey D. Ullman…

Nexys4 DDR 使用SPI FLASH

这个应该是这个板子的进阶内容,网络上面的资料好少的。官网给的入门介绍都只几笔带过的,在实现《自己动手写CPU》的时候需要用FLASH作为ROM,在这里纪录实践过程 在看CSDN里面一个人的教程,稍微系统的学一下FGPA,作为民间硬件设计者,参考一下规范的设计方法,磨刀不误砍柴工 FPGA基础入门【5】数码管仿真及实现 参考 FPGA基础入门【8】开发板外部存储器SPI flash访问…

Nexys4 DDR 使用DDR

在弄《自己动手写CPU》的时候需要使用DDR 作为RAM,这里记录我的实践过程 参考 在Nexys4 DDR上实现的DDR2读写例程 Nexys4 DDR上的DDR2仿真与设计 FPGA基础入门【9】开发板外部存储器DDR2访问…