自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (18)
  • 收藏
  • 关注

原创 自己动手写CPU之第五阶段(2)——OpenMIPS对数据相关问题的解决措施

为实现数据前推而对OpenMIPS系统结构所做的修改。有两个方面。(1)将处于流水线执行阶段的指令的运算结果,包括:是否要写目的寄存器wreg_o、要写的目的寄存器地址wd_o、要写入目的寄存器的数据wdata_o等信息送到译码阶段,如图5-8中虚线所示。(2)将处于流水线访存阶段的指令的运算结果,包括:是否要写目的寄存器wreg_o、要写的目的寄存器地址wd_o、要写入目的寄存器的数据wdata_o等信息送到译码阶段。

2014-07-31 13:27:14 4568 8

原创 自己动手写CPU之第五阶段(1)——流水线数据相关问题

我们在第4章实现的五级流水线结构很简单,如果按照“简单即美(Simple is Beautiful)的标准,那么我们的流水线是美的,但是不完美,因为现实往往是复杂的,一个简单的流水线是解决不了如此多的现实问题的,本节探讨的数据相关问题就是其中一个问题。在我们实现逻辑、移位操作等其它指令之前,必须先讨论这个问题,因为这个问题已经影响到测试程序的编写了。流水线中经常有一些被称为“相关”的情况发生,它使得指令序列中下一条指令无法按照设计的时钟周期执行,这些“相关”会降低流水线的性能。流水线中的相关分为三种类型。

2014-07-30 13:16:33 12146 2

原创 自己动手写CPU之第四阶段(4)——Makefile文件建立

为了得到指令存储器初始化文件,我们需要输入4条命令,有点麻烦,最好只输入一条命令就可以了,这需要使用到Makefile文件。

2014-07-29 13:01:58 3471 1

原创 自己动手写CPU之第四阶段(3)——MIPS编译环境的建立

OpenMIPS处理器在设计的时候就计划与MIPS32指令集架构兼容,所以可以使用MIPS32架构下已有的GNU开发工具链。本节将说明如何安装使用GNU开发工具链以及如何制作Makefile文件,从而以更加方便、快捷、自动的方式对测试程序进行编译,并得到指令存储器ROM的初始化文件inst_rom.data。

2014-07-28 13:32:20 11032 13

原创 自己动手写CPU之第四阶段(2)——验证第一条指令ori的实现效果

将验证我们的OpenMIPS是否实现正确,包含:流水线是否正确、ori指令是否实现正确。在验证之前,需要首先实现指令存储器,以便OpenMIPS从中读取指令。

2014-07-25 12:58:59 8121 16

原创 自己动手写处理器之第四阶段(1)——第一条指令ori的实现

前面几章介绍了很多预备知识,也描绘了即将要实现的OpenMIPS处理器的蓝图,各位读者是不是早已摩拳擦掌,迫切希望一展身手了,好吧,本章我们将实现OpenMIPS处理器的第一条指令ori,为什么选择这条指令作为我们实现的第一条指令呢?答案就两个字——简单,指令ori用来实现逻辑“或”运算,选择一条简单的指令有助于我们排除干扰,将注意力集中在流水线结构的实现上,当然也可以选择其它类似的指令,只要简单即可。通过这条简单指令的实现,本章在4.2节将初步建立OpenMIPS的五级流水线结构,当我们在后面章节中实现其

2014-07-24 13:31:44 16145 10

原创 自己动手写处理器之第三阶段——教学版OpenMIPS处理器蓝图

从本章开始将一步一步地实现教学版OpenMIPS处理器。本章给出了教学版OpenMIPS的系统蓝图,首先介绍了系统的设计目标,其中详细说明了OpenMIPS处理器计划实现的5级流水线。3.2节给出了OpenMIPS处理器的接口示意图,及各个接口的作用。3.3节简单解释了各个源代码文件的作用。最后描述了OpenMIPS处理器的实现方法,读者将发现本书给出的实现方法与现有书籍的方法完全不同,更加易于理解、便于实践。

2014-07-23 13:15:14 7980 2

原创 自己动手写处理器之第二阶段(5)——ModelSim电路仿真

上一节实现了一个简化的处理器取指电路,需要通过仿真以验证其功能是否正确,直观的仿真思路就是:给出一个时钟信号,上述电路会在每个时钟信号上升沿将取指地址加1,同时从指令存储器中取出一条指令,观察取指地址是否依次递增,同时观察取出的指令是否是存储器中取指地址对应的指令,如果都符合,那么上述取指电路就实现正确。此处涉及到两个问题。1、如何在指令存储器中存储指令,也就是指令存储器初始化问题。2、如何给出时钟信号?本节将分别解答上述问题,在此基础上,使用ModelSim进行仿真。

2014-07-22 13:51:32 9578 5

原创 自己动手写处理器之第二阶段(4)——电路设计举例

本节将设计一个简化的处理器取指令电路,通过这个例子体会Verilog HDL的使用。处理器内部一般有一个PC寄存器,其中存储指令地址,正常运行过程中,PC的值会随时间增加,同时从指令存储器中取出对应地址的指令。所以,本节实现的处理器取指令电路,包含两部分:PC模块、指令存储器。

2014-07-21 13:44:32 4584

原创 自己动手写处理器之第二阶段(3)——Verilog HDL行为语句

Verilog定义的模块一般包括有过程语句,过程语句有两种:initial、always。其中initial常用于仿真中的初始化,其中的语句只执行一次,而always中语句则是不断重复执行的。此外,always过程语句是可综合的,initial过程语句是不可综合的。

2014-07-16 14:19:30 5090

原创 自己动手写处理器之第二阶段(2)——Verilog HDL简介

本书实现的OpenMIPS处理器是使用Verilog HDL编写的,所以本章接下来的几节将介绍Verilog HDL的一些基本知识,包括语法、结构等。因为本书并不是一本讲授Verilog HDL的专门书籍,所以此处介绍的内容并不是Verilog HDL的全部,只是一些基础知识,以及在OpenMIPS处理器实现过程中会使用到的知识。读者如果对Verilog HDL有进一步了解的需求,可以参考相关书籍,这方面有许多非常优秀的书籍。笔者推荐《数字系统设计与Verilog HDL(第4版)》,本章关于Verilog

2014-07-15 14:28:12 5855

原创 自己动手写处理器之第二阶段(1)——可编程逻辑器件与PLD电路设计流程

FPGA是可编程逻辑器件(PLD:Programmable Logic Device)的一种。PLD是上世纪70年代发展起来的一种新型器件,它的应用和发展不仅简化了电路设计,降低了开发成本,提高了系统可靠性,而且给数字系统的设计方法带来了革命性的变化。截止到现在,出现了多种工艺、不同原理的PLD,如下。 PLA(Programmable Logic Array)可编程逻辑阵列 PAL(Programmable Array Logic)可编程阵列逻辑 GAL(Generic Array Logic

2014-07-14 13:24:19 6257

原创 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简介

在前文介绍RISC的特点时提到一点:大量使用寄存器。这是因为寄存器的存取可以在一个时钟周期内完成,同时也简化了寻址方式。MIPS32的指令中除加载/存储指令外,都是使用寄存器或立即数作为操作数的。MIPS32中的寄存器分为两类:通用寄存器(GPR:General Purpose Register)、特殊寄存器。

2014-07-13 14:02:19 19418 5

原创 自己动手写处理器之第一阶段(2)——MIPS指令集架构的演变

MIPS指令集架构自上世纪80年代出现后,一直在进行着更新换代,从最初的MIPS I到MIPS V,发展到可支持扩展模块的MIPS32、MIPS64系列,再到集成代码压缩技术的microMIPS32、microMIPS64。每个MIPS ISA都是其前一个的超集,没有任何遗漏,只有增加新的功能。

2014-07-08 13:25:56 6457

原创 自己动手写处理器之第一阶段(1)——计算机的简单模型、架构、指令集

计算机很复杂,可以听歌、看电影、上网、玩游戏,内部是怎么工作的,这个问题太可怕了,太复杂了。计算机很简单,只有加、减、乘、除、逻辑、移位、转移、存储、加载等几类可以做的操作,太简单了。复杂?简单?其实取决于个人对事物的认识程度,认识的越多,了解的越深刻,那么就越接近本质,而本质往往都是简单的,比如大名鼎鼎的质能方程,一个简单的式子就解释了质量与能量的关系。计算机就是一台计算的设备,而且是一台很基础的计算设备,只能计算小学数学课堂上讲授的四则运算,再加上一些并不复杂的与、或、非等逻辑运算,其余诸如平方、

2014-07-07 13:00:41 10384 4

原创 自己动手写处理器开篇介绍

使用Verilog HDL设计实现了一款兼容MIPS32指令集架构的处理器——OpenMIPS。OpenMIPS处理器具有两个版本,分别是教学版和实践版。教学版的主要设想是尽量简单,处理器的运行情况比较理想化,与教科书相似,便于使用其进行教学、学术研究和讨论,也有助于学生理解课堂上讲授的知识。实践版的设计目标是能完成特定功能,发挥实际作用。

2014-07-04 11:52:24 9986 4

原创 OR1200处理器的可编程中断控制器PIC分析

可编程中断控制器Programmable Interrupt Controller(PIC)用来响应各种中断事件,如:键盘事件、串口数据到达等,PIC收集所有的中断,并通知CPU中断到达,后者转入到中断处理例程进行处理。OR1200最多支持32个中断。其功能实现主要依靠两个特殊寄存器:中断屏蔽寄存器PICMR、中断状态寄存器PICSR。通过PICMR可以设置是否屏蔽某些中断,通过PICSR可以知道中断源的信息。

2014-07-03 13:06:34 2255

原创 OR1200处理器的计时器模块TT介绍

计时器模块(Tick Timer:TT)一般用在操作系统的进程调度、用户程序的定时参考等。TT内部会对时钟周期计数,当计数值达到一个预设值时,会产生中断,通知处理器进行处理。其实现的主体是两个特殊寄存器:计时器单元计数寄存器TTCR、计时器单元模式寄存器TTMR,通过这两个SPR的不同配置,实现不同的工作模式,以及计时中断的产生。TTCR、TTMR是第10组特殊寄存器

2014-07-02 13:26:25 2262

原创 OR1200处理器中Wishbone总线接口模块WB_BIU介绍

WB_BIU模块是OR1200处理器与外部Wishbone总线连接的接口模块,15.1节给出了WB_BIU模块的对外连接关系,并指出WB_BIU模块的三个作用。因为OR1200处理器支持Wishbone B3版本,所以在15.2节介绍了Wishbone B3版本中的寄存反馈总线周期,重点说明了其中的周期类型识别地址标签CTI_O/CTI_I、突发类型扩展地址标签BTE_O/BTE_I的作用。

2014-07-01 13:02:52 2812

Jlink-v8固件烧写AT91-ISP v1.13及V8固件

用于解决国内JLINK使用时提示The use of the licensed software to operate SEGGER product clones is prohibited and illegal的问题

2017-02-26

OpenMIPS教学版讲解

OpenMIPS开始于2013年8月,目的是开发一款32位、兼容MIPS32指令集的开源软核处理器,便于老师教学、学生体会理解计算机体系结构课程的相关知识,同时也可以做实际用途。OpenMIPS将坚持自由软件的理念,保持开源的形式,同时采用商业友好的LGPL授权。

2015-09-22

《自己动手写CPU》除法指令实现

为OpenMIPS添加实现了除法指令,是《自己动手写CPU》的第七章

2014-09-12

自己动手写CPU第七阶段——实现乘累加乘累减指令

实现了MIPS32指令集规范中的乘累加、乘累减指令,有4条,包括:madd、maddu、msub、msubu

2014-09-03

《自己动手写CPU》第7章 简单算术指令实现

《自己动手写CPU》第7章 简单算术指令实现的代码 测试程序

2014-08-22

自己动手写CPU第六阶段——移动操作指令实现

自己动手写CPU第六阶段——移动操作指令实现

2014-08-13

自己动手写CPU第5阶段之一(数据相关问题的解决)

自己动手写CPU第5阶段之一(数据相关问题的解决)

2014-08-12

自己动手写CPU第4阶段(第一条指令ori的实现)

自己动手写CPU第4阶段(第一条指令ori的实现)

2014-07-28

开源处理器OpenMIPS模块连接关系图

开源处理器OpenMIPS模块连接关系图,使用VISIO绘制,十分详细,学习OpenMIPS必备利器

2014-07-23

MIPS编译器

mips gcc编译器,mips-sde-elf-i686-pc-linux-gnu

2014-06-21

DE2上使用OC8051运行点灯程序

资源里面包括详细说明和Quartus工程文件,其中将修改了的OC8051下载到DE2上,并且写了一段LED灯的测试程序,使用该测试程序初始化OC8051的ROM,使得OC8051下载到DE2上后,可以运行LED灯测试程序。 在文档中说明了如何修改OC8051的ROM

2013-03-23

DE2上使用OC8051运行LED点灯程序

资源里面包括详细说明和Quartus工程文件,其中将修改了的OC8051下载到DE2上,并且写了一段LED灯的测试程序,使用该测试程序初始化OC8051的ROM,使得OC8051下载到DE2上后,可以运行LED灯测试程序。 在文档中说明了如何修改OC8051的ROM

2013-03-23

OR1200各模块之间的连接关系图,使用VISIO绘制,理解源代码必备

OR1200各模块之间的连接关系图,使用VISIO绘制,理解源代码必备 共有两张图,一张描述的OR1200_TOP的各个模块连接关系,一张描述的OR1200_CPU中各个模块的连接关系,本人分析OR1200时自行绘制的,花了好几天啊,通过这两张图便于理解OR1200的代码。希望大家喜欢

2013-02-26

QMIS项目文件管理系统part2

QMIS项目文件管理系统是一个准开源的系统(之所以称之为准开源,是因为在系统中使用到了一个收费的Office中间件SOAOffice,用于实现文档的在线编辑,在此也希望大家能提供一款开源的Office中间件以替代SOAOffice,使得系统100%开源),本系统可以用于公司项目文档的管理、办公自动化等场合。采用VS2008开发,开发语言为C#,是ASP.net应用程序。另外使用了多种开源工具,如下:  Ext.net1.2.0(使用Ext.net搭建了整个系统框架、Ajax模型)  DotLucenc2.0.0.2(实现全文检索)  PDFBox1.6(实现PDF文件的读取)  KindEditor 4.0.6(实现在线编辑)  strawberry 0.1.7(实现流程绘制)  dhtmlxGantt(实现甘特图的显示、修改)  KTDictSegAnalyzer(实现中文分词)  SWFUpload(实现文件上传) 在此,对上述软件的作者表示感谢、致敬。 QMIS项目文件管理系统实现的功能有:  文档的在线管理  员工之间文档共享  文档的传递  详细的文件修改日志  基于文档的流程控制  项目文件一键归档  项目进度的甘特图显示  新闻公告的编辑、发布  全文检索  权限控制  公司部门、角色、人员管理  文档的在线编辑、数字印章(使用到收费软件SOAOffice) 因为本人权限限制,一次正能上传60M,所以代码被压缩成两个压缩包上传,大家要下载到这两个压缩包才可以使用

2012-04-15

QMIS项目文档管理系统part1

QMISQMIS项目文档管理系统是一个准开源的系统(之所以称之为准开源,是因为在系统中使用到了一个收费的Office中间件SOAOffice,用于实现文档的在线编辑,在此也希望大家能提供一款开源的Office中间件以替代SOAOffice,使得系统100%开源),本系统可以用于公司项目文档的管理、办公自动化等场合。采用VS2008开发,开发语言为C#,是ASP.net应用程序。另外使用了多种开源工具,如下:  Ext.net1.2.0(使用Ext.net搭建了整个系统框架、Ajax模型)  DotLucenc2.0.0.2(实现全文检索)  PDFBox1.6(实现PDF文件的读取)  KindEditor 4.0.6(实现在线编辑)  strawberry 0.1.7(实现流程绘制)  dhtmlxGantt(实现甘特图的显示、修改)  KTDictSegAnalyzer(实现中文分词)  SWFUpload(实现文件上传) 在此,对上述软件的作者表示感谢、致敬。 QMIS项目文档管理系统实现的功能有:  文档的在线管理  员工之间文档共享  文档的传递  详细的文件修改日志  基于文档的流程控制  项目文件一键归档  项目进度的甘特图显示  新闻公告的编辑、发布  全文检索  权限控制  公司部门、角色、人员管理  文档的在线编辑、数字印章(使用到收费软件SOAOffice) 因为本人权限限制,一次正能上传60M,所以代码被压缩成两个压缩包上传,大家要下载到这两个压缩包才可以使用

2012-04-15

Net版PDFBox1.6.0 DLL+VS2008例子

编译得到PDFBox11.6.0的net版DLL,另外还有VS2008中使用的例子。

2012-03-26

Ext.net+swfupload实现文件上传

Ext.net+swfupload实现上传组件。 特点: (1)适合嵌入到Ext.net项目中。 (2)避免了Ext.net的上传控件的缺点。Ext.net中上传控件在文件上传到服务器后在判断后缀、大小是否符合要求,这样在网速限制的情况下用户体验非常糟糕,往往等很长时间后得到“上传文件过大”的错误。本组件在客户端判断文件大小、类型,有效避免了上述问题。

2011-12-03

通过Openh323开发自己的H.323协议栈.pdf

本文分成三个部分介绍Openh323和RTH323,第一部分是Openh323中所创立的实体的介绍,作者选取了其中最重要的部分进行介绍,然后第二部分是对Openh323发起一个呼叫和收听一个呼叫的实现过程,最后一个部分是如何从Openh323发展成商业版本的RTH323。 作者介绍:卢政,毕业于莫斯科动力学院自动控制系,曾参与过航空发动机燃烧室数据采集系统的设计,是RTH323的设计人之一,同时也是多个俄罗斯的多个OpenSource项目的参与者,目前正在参与开放式小型网关和Open SIP,WQER远程接入服务器的开放原码开发项目。

2010-01-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除