作品

作品

DDR2 RAM 读写模块[verilog]

需求分析 用Nexys4 DDR 制作一台计算机[1] 硬件需要一次最小读写宽度8bits,最大读写宽度32bits的内存。 原理分析 NEYXS 4 DDR里的DDR2 SDRAM型号为MT47H64M16HR-25:H,它的文档在这里 由于DDR协议比较复杂,Xilinx提供了一个简化控制DDR的内存控制器IP核,Memory Interface Generator(MIG),这里就使用这个IP核来进行操作。 DDR RAM时序 它一共有以下几个信号 app_addr [26:0] in 数据地址 app_cmd [2:0] in 操作指令,3’b001为读,3’b000为写 app_en in 指令使能 app_rdy out 指令接受,SDRAM接受到信号之后就会将其拉高

By Feiran Yu

作品

SPI FLASH 读取模块[verilog]

需求分析 在这里实现一个一次读取4Bytes的flash控制器。 在 用Nexys4 DDR 制作一台计算机[1] 硬件里提过,需要一个“硬盘”,用于读取只读数据。 原理分析 nexys4ddr 使用的spi flash芯片具体型号是S25FL128S芯片。 线路图如下 什么是spi协议 简单起见,仅介绍最基础的,详细的请参考wiki spi协议是一种串行总线,即数据用一根线一位一位的传,这里需要用的的有sck,cs_n,si,so四根信号线 sck是时钟线,用来做信号的同步,频率在工作范围内随意 cs_n是片选信号,"_n" 的意思是低电平有效,故当cs_n信号被拉低的时候,这个芯片才开始工作 si是输入到主设备的信号线,flash芯片读取数据的时候需要靠它 so是输入到flash的信号线,flash芯片写入数据的时候需要靠它 什么是flash芯片 简单来说,它是一种有一堆可读可写的颗粒(EEPROM)和一个控制器组成的,这个控制器封装了许多指令来操作那些颗粒。于是要想使用flash芯片,

By Feiran Yu

作品

用Nexys4 DDR 制作一台计算机[2] 操作系统

这个计算机需要一个小型的操作系统来完成任务 索引 这个项目由多个部分组成 你可能看到的不是第一篇文章 0. 总体 1. 硬件 2. 操作系统 3. 应用 目标 0. 最近目标: 实现一个由汇编和C语言混合的有中断处理的极小操作系统 1. 稍远目标: 通过这个极小系统移植贪吃蛇 2. 长远目标: 实现一个带中断处理,进程管理,内存管理,文件系统,设备管理的操作系统,并使用自己的编译器进行编译 当前完成情况 0. 参考了《自己动手写CPU》里的μcosⅡ 还有作者自己写的simpleOS,开始实现最近目标 1. 开始尝试把simpleOS改成汇编与C语言混合的模式 2. 汇编与C语言混合模式尝试成功 3. 极小系统编写成功 4. 尝试移植贪吃蛇 5. 贪吃蛇移植成功 6. 学习xv6操作系统 7. 准备移植xv6操作系统 mit6.828/

By Feiran Yu

作品

用Nexys4 DDR 制作一台计算机[1] 硬件

一个基础的计算机硬件部分 索引 这个项目由多个部分组成 你可能看到的不是第一篇文章 0. 总体 1. 硬件 2. 操作系统 3. 应用 1 特性 * CPU 部分 * 主频50Mhz * 5级流水线 * 32位处理器 * 支持加减乘除操作 * 支持内核模式 * 使用MIPS Ⅱ指令集 * 支持TLB分页缓存 [未完成] * 支持Cache缓存 [未完成] * 内存部分 * 使用DDR2协议 * 硬盘部分 * 使用SPI FLASH协议 * 显卡部分 * 分辨率,刷新率 1024x768@70Hz * 能够显示ASCII文本 * 总线部分 * 使用Wishbone总线 2 SoC结构 3 CPU特性 支持的指令以及功能为 lb/lh/lw: 从存储器中读取一个byte/half

By Feiran Yu

作品

用Nexys4 DDR 制作一台计算机[0] 总体

0 简介 这个项目源于一个很朴素的想法:做一台完整的计算机。 完整的计算机一共包含四个部分:硬件,操作系统,编译器,应用程序 (本项目是长期项目,包含大量未填完的坑,不定期更新) 0.1 [完整的计算机]的意思 具有基本的硬件,如TLB,SPI FLASH,DDR 2 RAM 具有基础的输入输出,如键盘,显示器 具有一个基本的操作系统,拥有如进程切换,文件系统 可以运行基本的c语言程序 索引 0. 总体 1. 硬件 2. 操作系统 3. 应用 以下是完整的计算机的每个部分的具体设计 1 硬件: 使用FPGA开发板Nexys4DDR:CPU+内存+硬盘+总线 OpenMIPS 键盘,VGA显示器:

By Feiran Yu

作品

CNN汉字识别

目标 训练CNN网络,识别常用汉字 依赖环境 python 2.X(推荐2.7) tensorflow 1.1.15 用法 1. 配置运行环境:安装python2.x ,tensorflow 1.1.15 2. 克隆https://github.com/yufeiran/ChineseRecognizer 到本地目录 3. [src] 为图片路径 python main.py [src] 参考链接 【OCR技术系列之四】基于深度学习的文字识别(3755个汉字) 用TENSORFLOW实现一个手写汉字识别之一:数据的获取和处理 GitHub仓库 完整汉字识别程序 ChineseRecognizer 深度学习入门的书的学习笔记 DeepLearn 参考书籍 《深度学习入门》

By Feiran Yu

作品

miniTown

Video Your browser does not support the video tag. 演示视频 这个项目是什么 一个2D模拟经营类游戏,一个种田游戏 模拟村庄发展,我们操控村长,发行或销毁货币,来对村子进行操作,使村子变得繁荣 为什么要有这个项目 1.想通过模拟一个村庄的发展,来了解货币和价格的作用和意义。 2.玩过不少,并且喜欢种田游戏。 3.也作为软件工程每个人要做的团队作业。 这个项目要怎么做 食色性也 -《孟子·告子上》 我们假设每个村民有两种欲望:吃饭和繁衍,欲望有多个级别,村民会为了满足欲望,去工作 我们想做一个原始的游戏,技术也是使用尽量原始的技术 1. 使用自己开发的游戏引擎,底层使用GDI绘图以及使用MCI播放声音,不使用DirectX或者OpenGl开发,所以没有很多的环境依赖,易于安装运行 2. 使用纯自己手绘图像 3. 使用自己开发的简易UI来完成交互 4. 音效资源全来自于网络免费开放音效社区爱给,

By Feiran Yu

作品

CMin

介绍 编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。 这里实现了一个支持函数、数组的精简C语言文法的编译器 实现细节 词法分析 构造DFA 语义分析 使用递归下降 汇编代码生成 生成代码为一个虚拟机环境 代码仓库 CMin 参考 * Compiler Construction: Principles and Practice - Kenneth C.Louden * Parsing Techniques - Dick Grune; Ceriel J.H. Jacobs

By Feiran Yu