当前位置:主页 > 行业产品 >

低成本FPGA开发板如何实现Oberon系统

发布时间:19-09-28 阅读:550

1988年,Jürg Gutknecht 和我一路完成并出版了Oberon 编程说话[1,2],其为我职业生涯早期开拓的别的两种编程说话Pascal和Modula-2 的后续版本。与Modula-2 比拟,我们最初设计Oberon编程说话力争加倍精简和高效,以便能够更好地赞助教授教化职员为谋略机科学专业的门生教授系统编程。我们再接再励,于1990 年针对可采纳windows系统和具有字处置惩罚能力的事情站开拓了Oberon 操作系统(OS),以此作为事情站的今世实现要领。接着,我们出版了一本书,名为《Project Oberon》,具体解说了Oberon 编译器以及与之同名的操作系统。此外,书中还包括具体的指令和源代码。

几年前,我的同伙Paul Reed 建议我从新修订并再次出版这本书,不仅由于这本书对系统设计教授教化具有紧张代价,同时还由于这本书可以作为优越的切入点,赞助那些想要成为立异者的人们从零根基构建靠得住的系统。

然而,我当时实际上是碰到了很大年夜的艰苦。我最初开拓的编译器是将已基础消掉了的处置惩罚器作为目标。是以,我的办理法子便是为今世处置惩罚看从新编写编译器。但在做了不少钻研之后,我无法找到一款能够在清晰度、规律性和简洁性上相符我标准的处置惩罚器。是以,我自己设计了这款编译器。而我之以是能够将该设法主见付诸实现,都是由于今世FPGA 能够赞助我设计硬件以及系统软件。更紧张的是,选择赛灵思FPGA 能赞助我更新系统,同时让设计尽可能靠近自1990 年以来的原始版本。

实现在低资源Digilent Spartan?-3开拓板上的新型处置惩罚器RISC 认真托管1MB 静态RAM (SR

AM) 内存。我独一添加的系统硬件便是一个鼠标接口和一个用来调换旧系统中硬盘驱动器的SD 卡。

这本书和面向全部系统的源代码可在projectoberon.com[3,4,5] 中查阅,也可在该网站上名为 S3RISCinstall.zip. 的单个文件中进行查阅。该文件包孕指令、SD 卡文件系统图像和FPGA 设置设置设备摆设摆设比特文件(对付Spartan-3开拓板的 Platform Flash,此为PROM文件形式),以及SD 卡/ 鼠标接口硬件的构造详图。

RISC处置惩罚器

该处置惩罚器由算术逻辑单元、由16 个32 位寄存器组成的阵列和带指令寄存器、IR 及法度榜样计数器PC 的节制单元组成。Verilog 模块RISC5 便是该处置惩罚器的范例代表。

该处置惩罚用具有20 种指令:4 种用于移动、偏移和扭转;4 种用于逻辑运算;4 种用于整数运算;4 种用于浮点运算;2 种用于存储器造访;2 种用于分支。

RISC5 经由过程运行情况RISC5Top导入。该运行情况包括到各类(内存映射)器件和SRAM(256M×32 位)的接口。全部系统(图1)包括以下Verilog 模块(见行统计):

我将内存映射到诟谇VGA 显示器中,这样它只占用1024×768×1位/ 像素=98304 字节,基础上占 1MB 可用主内存的10%。该SD卡将取代初始系统中80MB 的硬盘驱动器,其可经由过程能够吸收并序列化字节或32 位字的标准SPI 接口进行存取。键盘和鼠标经由过程标准PS-2 串行接口连接。此外,还供给一根串行异步的RS-232 线和一个通用8 位并行的I/O接口。模块RISC5Top还带有一个每毫秒采纳增量式计数的计数器。

OBERON操作系统

该操作系统软件由包括内存分配器(带垃圾收受接收器)的内核、文件系统以及向导载入法度榜样、文本系统、浏览器系统和文本编辑器组成。

名 为“Oberon”的模块是中间义务调整法度榜样,而“System”是根基敕令模块。经由过程点击显示器上任何浏览器文本“M.P”上的中心按钮即可触发动作, 此中P 是模块M 声明的法度榜样名。假如M 不存在,则会自动加载。然则,大年夜多半文本编辑敕令是经由过程简单的鼠标点击触发的。此中,左边一栏按钮用来设置 脱字 符,标记文本位置,右边一栏按钮用来选择文本字段(text stretch)。

“Kernel”模块包括磁盘存储治理和垃圾收受接收器。我包管察看浏览器是平铺的,不重叠。标准结构显示了多个浏览器的两条垂直轨迹。只需拖动标题栏,就可以放大年夜、缩小或移动它们。图2 显示了在显示器上运行的用户界面以及Spartan-3 开拓板、键盘及鼠标。

加载时系统占用模块空间112640字节(21%),占堆(heap) 的16128字节(3%)。系统包括以是下几个模块(见行统计),如图3 所示:

值得留意的是,该系统在加电或重置时,完成初始化仅需两秒钟。这包括文件目录中垃圾收受接收扫描。

OBERON编译器

系统自带的编译器采纳简单的自上而下递归下降阐发法。用户应用ORP.Compile @ 敕令即可激活模块选定的源文本上的编译器。 包解析器经由过程扫描仪输入各类符号,包括识别符、数字和特殊符号(如BEGIN、END、+等)。该规划已被证着实许多利用中有效且均体现非凡。这点在我着的书《编译器布局》[6,7] 中有具体阐明。

该包解析器调用代码天生法度榜样模块中的法度榜样。这些法度榜样直接将指令添加在代码阵列上。假如已知所有分支目的地,向前跳转指令(forwardbranch instructions)在模块编译停止时则会供给跳转地址(修正)。

所有可变地址都与基址寄存器关联。这便是用于局部变量(运行时设置在法度榜样输入)的R14(客栈唆使器)或用于全局和输入变量的R13。

基址地址按要求经由过程地址保存在寄存器R12 内的系统全局模块表载入。R15 用于RISC 架构确定的返回地址(链接)。是以,R0-R11 可用于表达式评估和通报历程参数。

全部编译器由4 个相对较小的有效模块组成(见行统计):

编译器占用115912 字节(22%)的模块空间和17508 字节(4%)的堆空间(编译之前)。其源代码长约65KB。编译器自身的编译在25 MHzRISC 处置惩罚器上只需几秒钟[8]。

编译器平日应用值为NIL的唆使反省数组索引和基准值。假如违反规定,这会造成陷阱。这种技巧具有高度的安然性,防止差错和崩溃。事实上,只能经由过程采纳伪模块SYSTEM中的操作,即PUT 和COPY,才能防碍系统的完备性。这些操作必须局限于接入器件接口的驱动模块。在输入列表中,经由过程SYSTEM 很轻易识别它们。全部系统采纳Oberon 编程,无需应用汇编码。

我选择Digilent Spartan-3开拓板是因为其资源低、操作简便,这使其适于教导机构,以得到整套讲堂教授教化套件。一个重大年夜上风便是该开拓板上有静态RAM,使得接口连接异常简单直不雅(以致用于字节选择)。遗憾的是,所有新开拓板均采纳动态RAM,虽然存储空间更大年夜,但接口连接繁杂得多,是以刷新和初始化(校准)必要电路。这一电路与带静态RAM的全部处置惩罚器一样繁杂。纵然节制器以单片式供给,这有悖于我们的开放反省原则。

着末的设法主见

40多年前,C.A.R. Hoare 说,在科学技巧的所有分支学科中,门生在被要求用实验考试测验自己的设法主见之前,轻易受到许多示范性设计实例的影响。编程和软件设计与这种明智模式形成了光显比较。这里,在涉猎任何实例之前,要求门生从一开始就编写法度榜样。

这种可骇事实的缘故原由便是:险些不存在大年夜小相宜的示范实例。是以,我抉择轻细修正这种情形,我在1975年编写了《算法与数据布局》一书。随后(与J. Gut-knecht)认真操作系统教授教化义务,我设计了Oberon 系统(1986-88)。

此后,编程教授教化并没有显着前进,而系统的规模和繁杂性明显增添。虽然开源的努力颇受迎接,但它并没有真正改变这种形势,由于大年夜多半法度榜样已经建成“运行”,但却没有真正投入应用。

我继承大年夜胆发起,应从新设计所有法度榜样,否则则谋略机,还有读取要领。这些法度榜样应是可发行的。即便这种措施精确而有效,但这是一项比创建可履行法度榜样更为艰巨的义务。这意味着,没有任何部分必须用汇编码指定。

轻忽在这种“工资身分”的结果便是,在许多地方,新的利用没有获得精心设计,而是经由过程打消法度榜样中差错来实现,其结果无意偶尔是令人担忧的。要做到“易懂”的关键便是坚持简单性和规律性,放弃不需要的修饰,避免花里胡哨,精确区分传统与便捷。

该系统所占空间小,是小资本实现大年夜作为的见证。虽然Oberon 系统包孕一个文件系统、文本编辑器和浏览器(Windows)治理法度榜样,但比拟多半今世操作系统而言,其占用的空间少得可怜。意外的是它仅仅寄托一些简单规则,是以便于进修若何应用。

着末,这种简单的系统的另一大年夜上风便是,用户可以在该根基系统上安然构建所需法度榜样,而不必担心是否存在未知特性与功能,如后门程式(back door)。从系统完备性易受到进击的角度看,这是一个基础属性,是关键安然型利用弗成或缺的。值得留意的是,我们的系统硬件没有这种暗藏元件。终究,在如斯之大年夜而又没人能够完全懂得的根基上构建的任何系统也不能予以包管。

滥觞:电子产品天下



上一篇:天水市检察院构建“亲清”检企关系
下一篇:《海贼王》936话情报,索隆大战丑三小子,德雷