济宁医学院信息工程学院微程序控制器模型计算机的设计与调试09级计本2班200907010211李秋生一台模型计算机的设计一、教学目的、任务与实验设备1.教学目的(1)融会贯通本课程各章节的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,加深计算机工作中“时间—空间”概念的理解,从而清晰地建立计算机的整机概念。
(2)学习设计和调试计算机的基本步骤和方法,提高使用软件仿真工具和集成电路的基本技能。
(3)培养科学研究的独立工作能力,取得工程设计与组装调试的实践和经验。
2.设计与调试任务(1)按给定的数据格式和指令系统,在所提供的器件范围内,设计一台微程序控制的模型计算机。
(2)根据设计图纸,在MAX+PLUS 平台上进行仿真,并下载到EL教学实验箱上进行调试成功。
(3)在调试成功的基础上,整理出设计图纸和其他文件。
包括:①总框图(数据通路图);②微程序控制器逻辑图;②微程序流程图;④微程序代码表;⑤元件排列图(或VHD程序清单);⑥设计说明书;⑦调试小结。
2.实验设备(1) PC机一台(2) EL教学实验箱(3) MAX+PLUS Ⅱ配套软件二、数据格式和指令系统本模型机是一个8位定点二进制计算机,具有四个通用寄存器:R0~R3,能执行11条指令,主存容量为256KB。
1.数据格式数据按规定采用定点补码表示法,字长为8位,其中最高位(第7位)为符数值相对于十进制数的表示范围为:-1≤X≤1―2―7三、总体设计总体设计的主要任务是(1) 选定CPU中所使用的产要器件;(2) 根据指令系统、选用的器件和设计指标,设计指令流的数据通路;(3) 根据指令系统、选用的器件和设计指标,设计数据流的数据通路。
计算机的工作过程,实质上是不同的数据流在控制信号作用下在限定的数据通路中进行传送。
数据通路不同,指令所经过的操作过程也不同,机器的结构也就不—样,因此数据通路的设计是至关重要的。
所谓数据通路的设计,也就是确定机器各逻辑部件相对位置的总框图。
数据远路的设计,目前还没有非常标准的方法。
主要是依据设计者的经验,并参考现有机器的三种典型形式(单总线、双总线或三总线结构),根据指令系统的要求,可采用试探方法来完成。
其主要步骤如下:(1) 对指令系统中的各条指令进行分析,得出所需要的指令周期与操作序列,以便决定各器件的类型和数量。
(2) 构成一个总框图草图,进行各逻辑部件之间的互相连接,即初步确定数据通路,使得由指令系统所包涵的数据通路都能实现,并满足技术指标的要求。
(3) 检验全部指令周期的操作序列,确定所需要的控制点和控制信号。
(4) 检查所设计的数据通路,尽可能降低成本,简化线路。
以上过程可以反复进行,以便得到一个较好的方案。
图1给出了一个没有考虑乘法除法指令操作的总框图参考方案,注意,在此方案确定之后,应该检查所选用的各个器件是否满足数据通路的要求。
实际上,数据通路的设计与器件的选择应同时进行而不能分离地工作。
其次,接入总线的器件都要有三态输出,以便与总线连接。
另外,在信息传送过程中应当注意器件原码和反码输出的配合关系。
图1所示的方案采用单总线结构,使用的许多器件都是三态输出,这种方案便于总线的连接和扩展,但缺点是指令和数据的传送都要经过总线,因此对总线的使用权就要分配得当。
另外,执行算术逻辑指令时,先将第一个操作数由通用寄存器Ri 送至缓冲寄存器DR1,然后再由通用寄存器Rj取第二个操作数送至缓冲寄存器DR2,之后送往ALU进行运算。
显然,执行—条算术逻辑指令的时间相应要长一些。
图1 模型机数据通路框图四、微程序控制器数据通路框图—旦确定,指令流与数据流的通路也就随之最后确定,因而运算器和控制器的大部分结构也就确定下来了。
图1中各功能器件上还标注了控制点及其控制信号.这些控制信号就是微程序控制器进行设计的依据。
1.微指令格式微指令格式建议采用水平型微指令,微命令编码采用直接表示法和分段直接译码法相结合的混合表示法,以缩短微指令长度。
后继地址采用断定方式。
微指令格式如下:同学们应根据本模型的具体情况来确定各字段的长度。
2.微程序控制器根据微指令和微程序的长度,确定控制存储器需选用几片EPROM(2716)用位扩展方式组成。
3.微程序设计将机器的全部指令系统采用微指令序列实现的过程,叫做微程序设计。
一条机器指令对应一个微程序,11条机器指令应当对应11个微程序。
微指令格式确定后,微程序的横向设计在于正确地选择数据通路,纵向设计在于确定后继微指令地址.事实上,微程序设计的关键在于纵向设计,即如何确定下一条微指令的地址。
通常的做法是先确定微程序分支处的微地址,因为微程序分支处需要进行判别测试。
这些微地址确定以后,就可以在一个“微地址表”中把相应的微地址单元填进去,以免后面的设计中重复使用而未发现,以致造成设计错误。
五、输入输出输入输出是人机联系的重要手段,输入可采用开关、键盘等方式,输出可采用字符显示或打印输出等方式。
考虑到成本与设备因素,本模型机采用最简单的二进制开关输入和发光二极管显示的方法,换句话说,本模型机中只使用两种“外部设备”:一种是二进制代码开关,它作为输入设备;另一种是发光二极管,它作为输出设备。
本设计为了节省器件,输入输出时可以不设置专门的数据缓冲寄存器。
例如输入时,二进制开关数据直接经过三态门送到总线上,只要开关状态不变,输入的信息也就不变。
输出时,将输出数据送到数据总线BUS上,驱动发光二极管进行显示。
如果采用正规的输入输出方法,可采用相应的器件构成接口电路。
六、组装与调试1.元器件的布局与连接由图1看出,数据通路一旦确定之后,在调试过程中将会很少有变化。
因此从组装和调试的角度来看,模型机总框图可划分为如下三个相对独立的功能模块:(1)运算器、存储器和系统总线(2)时序产生器(3)微程序控制器本模型机所使用的器件较多,布线的工作量相当大,希望同学们认真、细致地工作。
元器件布局的一般原则是尽心能地按功能电路相对集中,这样做的好处是各器件之间的连线较短,同时也便于组装和调试.为了安装和调试检查方便,集成电路应当以相同方向排列。
通常总是把集成电路片的定位缺口向左,此时它的电源脚在左上角,接地脚在右下角。
这种排列有利于设置电源线与地线。
规整的布线不仅对调试维修带来方便,也可以保证线路可靠地工作,任何马马虎虎的接线将会给调试带来难以想象的后果,因此在布线前必须对布线质量给予高度重视。
2.分调试按功能模块进行分调是实现总调的前提和基础,因为只有各功能模块工作正常后,才能保证全机的正确运行。
为此必须—步一个脚印、精心做好分调试,切不可赶急图快,以免在未做好分调的情况下进入总调,而最后又不得不返回头来重新分调。
分调的重点放在时序产生器和微程序控制器上。
3.总调当各模块分调正常后,可将控制器发出的控制信号线接到相应的功能部件中去,转入全机总调试。
总调的第一步,事实上是检查全部微程序流程图。
方法是用单步方式读出并执行微指令。
进行的顺序是:先执行控制台指令的微程序流程图,然后执行机器指令的微程序流程图。
当全部微程序流程图检查完毕后,如果存储器和运算器功能执行正确,就算总调第一步完成。
第二步是在内存中装入包括有全部指令系统的一段程序和有关数据,进一步可采用单指令方式或连续方式执行,以验证机器执行指令的正确性。
第三步是编写一段表演程序,令机器运行。
实习经验首先因设计出ALU计算器模块、R4~R0零时寄存器选择模块、数据通路模块、存储器模块、计数器模块,最后在根据之前设计所需的信号与结果设计安排cpu 控制模块,这样的设计思路清晰,省时省力。
而我在实验室采取了完全相反的步骤,先设计了cpu控制模块,最后根据控制模块设计其他模块,使得其他模块无法正常匹配cpu模块,不断地修正cpu模块,前后重写代码4次之多严重影响了试验进程。
此经验教训应当谨记。
试验步骤:实验步骤会按照正确的顺序进行,即将cpu控制模块的设计放在最后,先说明其他模块的设计。
ALU计算模块:设计思想:数据通路模块:数据通路模块的作用是控制数据在总线上的传输,包括个寄存器的载入、释放,ALU运算器操作数输入、结果的输出等部分R4~R1选择模块:选择模块的功能在这个实验中很重要,其可以大量减少cpu控制模块的状态设置,选择器最基础的功能有根据指令的要求确定特定的临时寄存器的释放和载入。
同时根据设计的需要,还要有存储备选数据的能力,避免被总线的上的数据影响最终的选择结果。
设计思路:有四个临时寄存器,可以由两位决定二进制值决定各个寄存起的编号,可由2—4译码器实现此功能。
选择器要能起到选择正确顺序是临时寄存器工作的作用,所以要有控制端控制第一顺序操作的临时寄存器和第二时间操作的临时寄存器(该cpu对寄存器的操作最多只有两个操作步)。
最后要决定对所选的临时寄存器是载入还是释放,或者既不载入也不释放。
根据这一思路设计的选择模块如下:载入选择:存储预选值选择寄存器操作顺序选是否进行操作选置1有释放选择:置0有波形仿真:CL 和CB 控制载入/释放次序,0表示第一顺序载入/释放,1表示第二顺序载入/释放。
RL 和RB 控制是否确认载入/释放,根据指令置1打开确认,置0否认。
波形图显示预算结果得08,为正确值。
数据通路模块:数据通路模块的作用是将数据正确的在各模块之间传输,要避免各种可能的冲突,例如外部数据和R4~R1之间数据的冲突,R4~R1之间的数据冲突,地址数据的和信息数据的冲突等。
同时要保证个数据在能够正确地载入和释放,要求在争取的时间,正确的顺序载入争取的数据寄存器或临时寄存器。
这点要求和时序电路的真确配合,还有寄存器选择电路的配合。
设计思路:根据试验的要求,数据通路需要一个ALU 运算模块,两个数据寄存器,其功能是保存操作数并将得到的操作数直接送入ALU 预算模块进行预算。
4个零时寄存器R4~R1,一个数据选择模块,控制外部数据输入的计数器。
设计图下:总线数要操作的寄存器 顺序为:R3,R2DR1载DR2载第2载入选第一载入选第1释放选第2释放选确认载确认释波形仿真:ALU模块数据总数据总ALU模块数据寄存临时寄存载入选择释放选择外部数据输外部数总线数1序载2序载载入确1序释2序释释放确确认正确结果总线数据关闭显示总线显示ALU数据数据传输模块仿真的程序为分别载入数据03和05进行加法运算并显示结果。
首先外部数据输入SW_BUS,CL根据IR3..0的指令选择相应临时寄存器,由RL确认载入后,数据由SW_BUS依次先后载入R3、R2关闭SW_BUS,CB根据IR3..0的指令选择相应临时寄存器,由RB确认释放后,数据由R3、R2依次先后释放,由DR1、DR2先后载入DR1、DR2载入数据后数据直接送入ALU预算模块中进行预算,之后打开ALU_BUS,在总线上显示运算结果,可以看到运算结果正确,说明之前的操作过程并没有出现任何错误。