开发工具:
文件大小: 3mb
下载次数: 0
上传时间: 2019-07-15
详细说明:入门级FPGA学习材料,简单明了,易学易会!了解FPGA从这本书开始主界而
菜单栏
58
工具栏
编辑/调试区…
控制台
ⅹ语言-流水灯……
y语言-程序示例
着自着非非着着看音着自着着
28
mcu综合应用
非着着着·着着·着着
75
游戏简介
硬件框架…
76
自制手柄按键映射………
软件框架
看自
78
VGA显示区域布局
六、按键底层逻辑( ver i log
七、按键上层程序(y语言)
八、vga底层逻辑( ver i log)…
82
九
ram底层逻辑( ver i log
85
vram总线映射( ver i log)……
88
小游戏欤件编写《y语言
89
指令编译原理.
,100
前言
2014年从兰州大学微电子专业毕业,转眼已经工作5年
了,这5年期间从事过硬件/射频、无线通信-数字信号处理,
图像/视频处理等工作,其核心工作一直围绕着FPGA,工作
之余的时间也大多花在学习新技术上,回顾一下自己的职业
经历诸多感慨。
这段时间离职了,在没确定新工作之前,我打算花点时间
写点技术博文,一是给自己杂乱的知识积累做个梳理,二是
给新入门FPGA行业的同学一份精美的学习资料。
博文系列不会有太多基础的解说,对于基础薄弱的同学推
荐看看高亚军的FPGA教学视频,罗华飞的《 MATLAB GU|设
计学习手记》
《趣味FPGA》涵盖AⅠ算法加速、图像处理、CPU设计
编程语言创建、编译器设计、上位机设计等。博文内容来源
于自己杂乱的知识积累,绝大部分和工作经历无关,因为自
己知识的局限性,有错误的地方还请大牛们指教
我对技术非常有热情,也以从事技术工作为乐趣,如果你
是和我相同类型的人,可以邮件联系我,希望能交到更多相
似的朋友。
《趣味FPGA》系列博文在不断更新中,最新文章会更新
在我的新浪博客中,更多信息可以百度《趣味FPGA》查看。
转载《趣味FPGA》的同学请保持文档、配套代码的完整性
xmcu硬件设计
xmcu简介
xmcu是一个简单的微控制器,由cpu、ram、rom、bus、
uart几个部分组成,其它外设可以挂载到bus模块下面,cpu
可以直接寻址操控bus。mcu包含了一个8位的精简指令集
cpu,指令集完全自定义,无任何其它借鉴,
Xmcu框图如下
uar t
am
cpu
r om
Us
Per ipheral-1
Per i pheraI-2
Per i phera
Per i pheral-n
uart:串口通信单元。
rom:程序存储内存。
ram:程序运行内存。
cpu:中央处理器。
bus:cpu总线单元。
per i l:DDR、网口、摄像头、USB、 FLASH、SD等外设。
pu架构
cpu由 fetch、 decode、 execute、alu、 timer、 debug几
个模块组成,框图如下:
ebug
fetch
decode
excute
timer
fetch:取指模块,rom指令预取、 debug指令处理。
decode:指令译码模块
exude:指令执行模块。
alu:算数逻辑运算模抉。
timer:定时器模块。
debυg:调试模抉,实现rom下载,rom读取,代码调试等功能。
三、cpu流水线
cpu流水线分割为:取指->译码→执行->写入4个步
骤,译码-〉执行-〉写入这3个环节都为单周期执行,取指
环节増加debυg逻辑单元电路,为了不降低cu时钟频羍,取指
做了多级流水线分割处理。
取址(红色部分)-〉译码->执行->写入。
timer state - fetch en - rom ren - rom data -
inst data - decode - excute - data back
跳转、延时等操作,需要清空cpu流水线
跳转指令需要6个空指令清空部分流水线。
延时指令需要8个空指令清空全部流水线。
四、cpu寄存器
在cpu内部有8个特殊寄存器,用于实现特定的功能。
A、B、C、D:通用寄存器,8bit宽度
PC:程序计数器,24bit宽度。
Timer:定时器,24bit宽度。
RT:ram读数据返回寄存器,8bit宽度。
BT:bus读数据返回寄存器,8bit宽度。
五、cpu指令集
cpu一共规划了40条指令,所有指令都是单周期执行。
inst
命令说明
0空指令
1写A寄存器,数据为rom数据x
2写B寄存器,数据为rom数据x。
3写C寄存器,数据为rom数据x。
4写D寄存器,数据为rom数据x
5写A寄存器,数据为RT寄存器值。
6写B寄存器,数据为RT寄存器值。
7写0寄存器,数据为RT寄存器值。
8写D寄存器,数据为RT寄存器值。
9写A寄存器,数据为BT寄存器值。
10写B寄存器,数据为BT寄存器值。
11写0寄存器,数据为BT寄存器值
12写D寄存器,数据为BT寄存器值。
13如果寄存器D等于0,则把A,B,C写入PC寄存器。
14把{A,B,0写入 Timer寄存器。
15把A、B写入au。执行A+B。
16把A、B写入alu。执行A-B。
17把A、B写入a|u。执行A*B。
18把A、B写入alu。执行A>B。
19把A、B写入a|u。执行A=B。
20把A、B写入au。执行A&&B。
21把A、B写入a|u。执行A&B。
22把A、B写入a{u。执行A‖|B。
23把A、B写入alu。执行A|B。
24把A、B写入a|u。执行A>B。
26写bus,地址为D寄存器,数据为A寄存器值。
27读bus,地址为D寄存器,数据写入BT寄存器。
28读ram,地址为D寄存器,数据写入RT寄存器。
29写ram,地址为D寄存器,数据为A寄存器值
30写ram,地址为D寄存器,数据为B寄存器值
31写ram,地址为D寄存器,数据为C寄存器值。
32写ram,地址为D寄存器,数据为a|uout08]。
33写ram,地址为D寄存器,数据为a|u_outo[7:0]。
34写ram,地址为D寄存器,数据为 a lu out1[15:8]。
35写ram,地址为D寄存器,数据为 alu out1[7:0]。
36写ram,地址为D寄存器,数据为a|uout2。
37写ram,地址为D寄存器,数据为auou3。
38写ram,地址为D寄存器,数据为 alu out4。
39把数据[A,B]发送到串口。
六、cpu调试单元
xmcu包含一个调试单元,调试单元充当JTAG的功能,实现
rom下载、rom读取、在线指令调试,cpu状态回读等功能,除
去cpu可执行的40条指令,还有几条调试指令。
调试指令(串口发送)如下表所示,“…”表示数据随意填充:
命令数据
说明
进入工作模式(执行rom程序)
1指令数据进入调试模式(暂停rom程序执行)
rom地址清零(需要进入调试模式)
rom数据清零(需要进入调试模式)
4
读rom操作(需要进入调试模式)
5rom数据写rom操作(需要进入调试模式)
读取A寄存器值
读取B寄存器值
读取寄存器值
9
读取D寄存器值
调试指令(串口接收)如下表所示“…”表示数据随意填充:
命令
数据
说明
0
清空缓存数据
发送缓存数据到控制台
调试数据调试数据返回,数据格式为ASCl码
调武数据调试数据返回,数据格式为GBK码高位
4调试数据调试数据返回,数据格式为GBK码低位
调试数据调试数据返回,数据格式为10进制数据
567
A寄存器返回值
B寄存器返回值
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.