Presentation is loading. Please wait.

Presentation is loading. Please wait.

数字系统设计 Digital System Design

Similar presentations


Presentation on theme: "数字系统设计 Digital System Design"— Presentation transcript:

1 数字系统设计 Digital System Design
EE141 数字系统设计 Digital System Design -----微处理器设计2 王维东 Weidong Wang 浙江大学信息与电子工程学院 College of Information Science & Electronic Engineering 信息与通信网络工程研究所 Zhejiang University Spring ZDMC – Lec. #13 Spring ZDMC – Lec. #13

2 任课教师 王维东 TA: 浙江大学信息与电子工程学院, 信电楼306 邮箱:wdwang@zju.edu.cn
EE141 任课教师 王维东 浙江大学信息与电子工程学院, 信电楼306 College of Information Science & Electronic Engineering Zhejiang University, Hangzhou, Tel: (O) Mobile: TA: 陈 彬彬 Binbin CHEN, ; 陈 佳云 Jiayun CHEN, ; Office Hours:玉泉信电楼 308室(可以微信或邮件联系). Spring ZDMC – Lec. #13 Spring ZDMC – Lec. #13

3 课程简介 课程代码:111C0120 参考书 阎石, 数字电子技术基础, 第6版, 高等教育出版社, 2016.
EE141 课程简介 课程代码:111C0120 参考书 阎石, 数字电子技术基础, 第6版, 高等教育出版社, 2016. 王金明著,数字系统设计与Verilog HDL,电子工业出版社,第6版 补充讲义/期中考试前预备 Stanford 大学 108A课程notes. R.H.Katz, G.Borriello, Contemporary Logic Design, second edition,电子工业出版社, 2005. M.M.Mano, 数字设计(第四版), 电子工业出版社, 2010. Spring ZDMC – Lec. #13 Spring ZDMC – Lec. #13

4 Other Course Info Website: http://mypage.zju.edu.cn/wdwd/教学工作/
Check frequently 答疑 玉泉信电楼308室/周二周五下午2:30-5:00 上课课间、课后均可 ,微信群/数字系统设计,短信均可

5 Grading (考核) Final grades will be computed approximately as follows:
平时(含课程作业、期中考试+小测验、Project、出勤等)30% Class Room Check Homework Sets 作业每周二上交截止期为课后一周内有效 Project 2 projects (1 or 2 members team) Project-2可选(总评加分1~5分,但不超过平时成绩范围) Finial Exam期末闭卷考试 - 70% 上课说明此门课程的成绩合成:平时成绩包括平时小测验、期中考试、作业、出勤、课堂讨论、论文 Spring ZDMC – Lec. #13

6 课程结构 数字理论知识(必备) 数字电路分析与设计 脉冲电路与接口 控制器与数字系统 微处理器简介与设计 数字系统和编码、逻辑代数、门电路
EE141 课程结构 数字理论知识(必备) 数字系统和编码、逻辑代数、门电路 数字电路分析与设计 组合逻辑电路 触发器、半导体存贮器、可编程器件 时序逻辑电路 脉冲电路与接口 控制器与数字系统 状态机 控制器 微码控制器 测试和验证 微处理器简介与设计 指令集 4位CPU Spring ZDMC – Lec. #13 Spring ZDMC – Lec. #13

7 讲义第十章 微处理器设计2 Spring ZDMC – Lec. #13

8 微处理器内部结构 微处理器的两个主要部分: 控制单元 用于控制数据通路的所有操作,实现微处理器运算的正确性 数据通路
主要包括运算单元ALU、存储单元(寄存器)及其相互连接 微处理器内部结构

9 微处理器的三个执行步骤 指令周期 (1)取指 即从程序存储器中把PC所指向的指令取出,拷贝到IR ; PC+1指向下一条指令的地址; (2)译指 从IR中提取出操作码,对指令所要做的操作进行翻译; 决定当前执行那一条指令,跳转到那一个对应的状态去; (3)执行指令 每一步将在有限状态机的一个状态被执行。 每个指令通常在一个时钟周期内执行 有些情况下一些存储器操作的指令可能需要两个甚至更长的时钟周期,这种情况下就需要更多的状态来实现正确的时序。 一般而言,程序的指令都是存储在外部寄存器中的,所以除了CPU外,微处理器一般还需要外部存储器以及连接外部存储器与CPU的地址以及数据总线。

10 mips指令格式 1)R型------三个寄存器操作数格式 2)I型--------两个寄存器操作数格式 3)J型-------无寄存器格式
用于如add和sub指令,有三个寄存器操作数。 2)I型 两个寄存器操作数格式 用于如lw和sw指令,具有两个寄存器操作数和一个16位立即数。 3)J型 无寄存器格式 有一个26位的立即数,无寄存器。 MIPS采用32位指令

11 微处理器实例1分析 --------simple 4-bit CPU

12 Another 4-bit TTL CPU

13 The Reduced Instruction Set -APOLLO181
only 2^4 = 16 operation codes (or op-codes) Each instruction then takes an argument of 4-bit data as immediate operand Notes for the 4-bit immediate operands: § "n" is a 4-bit binary data § "r" points one of the 16 registers § "p" is a binary operand which refers to the four function–select lines (S0, S1, S2, S3) of the ALU it includes Addition, Subtraction, Shift operand, Magnitude Comparison plus twelve other Arithmetic operations. Then it includes Exclusive-OR, Comparator, AND, NAND, OR, NOR plus ten other Logic Operations § "s" can only take the binary values of “0000” (0 Hex) or “1111” (F Hex)

14 New Instruction set Instruction OpCode Summary Description 0000 0001
LOAD (Mem) 0000 Accum = mem[Operand]; Load data to the accumulator from a value held in RAM with the address set by the operand.    LOAD (Value) 0001 Accum = Operand; Load the operand data to the accumulaor. ADD (Mem) 0010 Accum += mem[Operand]; Add value held in memory to the accumuator ADD (Value) 0011 Accum += Operand; Add operand to the accumuator  SUB (Mem) 0100 Accum -= mem[Operand]; Subtract value held in memory from the accumuator  SUB (Value) 0101 Accum -= Operand; Subtract operand from the accumuator   STO (Mem) 0110 mem[mem[Operand]] = Accum;  Store accumulator's value to memory, address held in memory.   STO (Value) 0111 mem[Operand] = Accum; Store accumulator's value to memory, operand equals address.  READ (Mem) 1000 Addr = mem[Operand]; Read from address, address held in memory. READ (Value) 1001 Addr = Operand;  Read from address, operand equals address. JMPLOW (Mem) 1010 PC Low Addr = mem[Operand] Jump the lower 4-bits of the Program Counter to an address held in memory. JMPLOW (Value) 1011 PC Low Addr = Operand Jump the lower 4-bits of the Program Counter to an address held by the operand. JMPHIGH (Mem) 1100 PC High Addr = mem[Operand]  Jump the upper 4-bits of the Program Counter to an address held in memory.  JMPHIGH (Value) 1101 PC High Addr = Operand  Jump the upper 4-bits of the Program Counter to an address held by the operand. JMPZERO (Mem) 1110 if(Accum == 0) {     PC = mem[Operand]; } If accumulator equals zero, program counter address equals a value in program memory. JMPZERO (Value) 1111 if(Accum == 0) {     PC = Operand; } If accumulator equals zero, program counter address equals the operand. 

15 New Instruction set The Math (Command #4, #5, #6, #7, #8, #9)
Move data inside and outside (Command #1, #2, #3, #E, #F) Comparison and Jump (Command #0, #A, #B, #C, #D)

16 Microcode The op-code of the instruction is decoded immediately by the ROM (74188) because the most significant data-outputs of the RAM are hard-wired to the ROM addresses. For each op-code the ROM provides a microprogrammed sequence of four states. Sixteen different op-codes with four states each make sixty-four possible combinations. Thus four ROM are tied together to form a larger array of memory that consists of 64 words.

17 Schematic for microcode

18 4 bit CPU - Micro-instruction microcode detail
ADDRESS ROM 0 ROM 1 FF 1 7F 2 BF 3 4 FD 5 DF 6 7 8 FB 9 10 11 12 13 14 15 16 17 EF 18 19 20 21 F7 22 23 24 25 26 27 28 29 FE 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 4 bit CPU - Micro-instruction microcode detail Starting at address zero and incrementing by one for each line, four for each instruction LTCH INC /LD /INC /DEC LTCH /WR LTCH /RST LTCH /RD INS /E ROM INS PC ACC ACC ACC REG REG FLAG JMPL JMPE JMPG PC OUT REG DATA IN 0 1 FETCH FF FF F FF BF FF FF FF LIT FF FD DF FF FF FD LOAD FF FB FF FB STORE FF FF FD FF INC FF FF EF FF

19 Interrupt Interrupt signals serve in APOLLO181 the same purposes as interrupts in others microprocessors when an external asynchronous event has occurred, the CPU jump to another portion of the program. A simple non-maskable interrupt technique has been implemented via hardware. When a device asserts the interrupt signal (in our simple case a button key) the CPU waits to finish the current instruction execution and then definitely jumps at the memory location pointed by a set of 8-bit switches placed on the board. In this way it is theoretically possible to implement 2^8 = 256 different interrupts which could point all 256 RAM locations of the program space. Here we can put a conditional jump table to enhance interrupt capability. Unfortunately the lack of a memory stack and the limited number of available instructions has prevented the implementation of a “return from interrupt” which would have allowed the program to flow back to the main program where it was interrupted.

20 Computer Organization
Computer design as an application of digital logic design procedures Computer = processing unit + memory system Processing unit = control + datapath Control = finite state machine Inputs = machine instruction, datapath conditions Outputs = register transfer control signals, ALU operation codes Instruction interpretation = instruction fetch, decode, execute Datapath = functional units + registers Functional units = ALU, multipliers, dividers, etc. Registers = program counter, shifters, storage registers

21 总结 ALU 时钟 PC计数器 寄存器 程序存储器 寄存器组 总线

22 LD asserted during a lo-to-hi clock transition loads new data into FFs
Registers Selectively loaded – EN or LD input Output enable – OE input Multiple registers – group 4 or 8 in parallel OE Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 LD D7 D6 D5 D4 D3 D2 D1 D0 CLK OE asserted causes FF state to be connected to output pins; otherwise they are left unconnected (high impedance) LD asserted during a lo-to-hi clock transition loads new data into FFs

23 Memories Larger Collections of Storage Elements
Implemented not as FFs but as much more efficient latches High-density memories use 1-5 switches (transitors) per bit Static RAM – 1024 words each 4 bits wide Once written, memory holds forever (not true for denser dynamic RAM) Address lines to select word (10 lines for 1024 words) Read enable Same as output enable Often called chip select Permits connection of many chips into larger array Write enable (same as load enable) Bi-directional data lines output when reading, input when writing RD WR A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 IO3 IO2 IO1 IO0

24 Data Path (ALU) ALU Block Diagram Input: data and operation to perform
Output: result of operation and status information 16 A B S Z N Operation

25 Block Diagram of Processor
Register Transfer View of Princeton Architecture Which register outputs are connected to which register inputs Arrows represent data-flow, other are control signals from control FSM MAR may be a simple multiplexer rather than separate register MBR is split in two (REG and IR) Load control for each register load path 16 REG AC rd wr 16 16 store path data Data Memory (16-bit words) OP N addr 8 Z Control FSM MAR 16 IR PC 16 16 OP 16

26 Block Diagram of Processor
Register transfer view of Harvard architecture Which register outputs are connected to which register inputs Arrows represent data-flow, other are control signals from control FSM Two MARs (PC and IR) Two MBRs (REG and IR) Load control for each register Control FSM 16 Z N OP AC REG load path store path Data Memory (16-bit words) PC IR data addr rd wr Inst Memory (8-bit words)

27 A Simplified Processor Data-path and Memory
Princeton architecture Register file Instruction register PC incremented through ALU Modeled after MIPS rt000 (used in 61C textbook by Patterson & Hennessy) Really a 32 bit machine We’ll do a 16 bit version memory has only 255 words with a display on the last one

28 Review of FSM Timing fetch decode execute step 1 step 2 step 3
IR  mem[PC]; PC  PC + 1; rd  A + B A  rs B  rt to configure the data-path to do this here, when do we set the control signals?

29 FSM Controller for CPU Now we need to repeat this for all the instructions of our processor Fetch and decode states stay the same Different execution states for each instruction Some may require multiple states if available register transfer paths require sequencing of steps

30 Alternative Ways to Implement Processor FSMs
"Random Logic" based on Moore and Mealy Design Classical Finite State Machine Design Divide and Conquer Approach: Time-State Method Partition FSM into multiple communicating FSMs Exploit Logic Block Functionality: Jump Counters Counters, Multiplexers, Decoders Microprogramming: ROM-based methods Direct encoding of next states and outputs

31 74LS181 Computers

32 10.3 微处理器设计示例EC-1 指令集-1 五个8bits指令
Opcode=3bits, 000,001和010三个编码没有定义, nop 1) 指令IN A输入一个8比特的数值,并存储到累加器A中; 2) 指令OUT A将累加器A中的数值拷贝到输出端口; 3) 指令DEC A把累加器A中的数值减1后再存入到累加器A中; 4) 指令JNZ(Jump Not Zero)测试A中的数值是否为0,假如为0,这个指令什么也不做,假如不为0,则将指令中的后四位,即aaaa(表示跳转地址)加载到寄存器PC中; 5) 指令HALT通过使CPU停止在halt状态从而停止微处理器的运行,直到系统复位跳出halt状态。

33 数据通路-1 指令集中操作的数据通路 (1)执行指令周期中的取指操作,并递增PC值或者加载新的PC值; (2)存储器;
(3)实现指令集中所有指令的操作。

34 数据通路-1 一个PC寄存器,4比特,+递增单元 一个IR寄存器,8比特 一个具有16个存储单元的8位程序存储器
一个8比特的累加器A,+递减单元 指令IN A,累加器A的输入来自于数据输入端口; 指令DEC A,累加器A的输入来自于递减单元的输出; 指令OUT A,无需特别的数据通路的操作,累加器的输出直接连接到数据输出端口; 指令JNZ A,需要一个8比特的OR门连接到累加器的所有输出上,来测试条件A是否不等于0。IR寄存器的低4位数据加载到PC寄存器中; 指令HALT,不需要任何额外的操作。

35 控制信号 数据通路中的控制字主要有5个 给控制单元提供一个状态反馈信号 即IRload,PCload,INmux,Aload和JNZmux。
Aneq0 我们的设计中,为了保持设计的简洁,我们把程序存储器跟CPU一起设计在数据通路中了

36 控制单元-1 控制单元的状态图 状态START(000)作为初始复位状态 在FETCH状态 在DECODE状态
指令JNZ A需要额外的时钟周期完成 PC加载新地址在下一个时钟沿发生 在FETCH状态 控制IRload信号有效, 将PC寄存器指向的程序加载到IR寄存器, 然后PC寄存器中的内容递增1后, 信号PCload将新PC加载到PC寄存器中。 在DECODE状态 测试IR寄存器的高三位, 即IR_7-5解码, 跳转到对应的状态。

37 五个指令的执行状态 指令IN A操作 指令DEC A 指令JNZ 到HALT状态 设置INmux信号为1来选择输入信号为外部端口,
设置Aload信号为1来加载输入信号到累加器A。 注意,为了输入指令能够读取到正确的输入值,输入数据需要在微处理器复位之前就设置好。 而且,由于INPUT状态不需要等待一个类似于回车键的信号,因此,即使有多个数据输入,也只能有一个数据会被读入进来。 指令DEC A 需要设置INmux信号为0、Aload信号为1, 以使递减单元的输出被连接到累加器并加载进来。 指令JNZ 使JNZmux信号有效以将IR寄存器中的低4位地址信号加载到PC寄存器。 状态反馈信号Aneq0=1时,控制信号PCload信号被设置为有效。 到HALT状态 将会无条件的停留在HALT状态 微处理器看上去像停止操作一样。

38 状态图 次态表、实现表,激励方程

39 状态控制 输出表、输出方程

40 控制单元 完整控制电路

41 完整电路-1 数据通路电路与控制单元电路信号连接

42 示例汇编程序-1 测试程序 手工编译 输入一个数据,将此数据进行递减直至0。 程序必须在数据通路和微处理器实现之前,加载到存储器中去
指令JNZ,最右边4位表示当检测条件为真时程序跳转的地址。 假设第一个指令IN A存储在程序存储器的地址为0000, 指令JNZ将跳转到第二个指令OUT A(在程序存储器中的地址是0001) JNZ指令的最后四位操作数被设置为0001。 由于指令JNZ的操作码为110,所以综合起来指令JNZ完整的编码是 。

43 硬件电路实现-1 完整的计算机 微处理器,存储器、输入和输出设备。 八个拨码开关作为输入设备,2个七段数码管作为输出设备。
一个LED来显示是否已经结束工作,一个按钮作为复位按钮。 较高频率(如25MHz)的时钟分频后变成4Hz,作为微处理器的时钟。

44 指令集扩展---EC-2微处理器 指令集-2 8个指令,仍是8位

45 指令 LOAD指令 STORE指令 ADD和SUB指令 IN指令 JZ指令 JPOS HALT指令使得微处理器停止运行。
地址是由指令的低5位表示。 STORE指令 把A中存储的内容赋给存储器特定地址单元。 ADD和SUB指令 分别表示把A的内容和存储器特定地址的内容相加、相减, 并把其结果再赋给A。 IN指令 输入一个值并存入A。 JZ指令 如果A=0则把特定地址赋给PC。把新地址赋给PC会导致微处理器跳转到存储器这个新地址继续执行程序。 JPOS 表示如果A是正数则把A中的内容作为特定地址赋给PC。 因为A是用补码表示,所以如果A的最高位为0时,则A是正数。 HALT指令使得微处理器停止运行。

46 数据通路-2 执行指令周期操作和实现所有指令操作
PC和递增单元的位宽:需要有32个位置的存储器,因此地址、PC和递增单元的位宽均为为5比特。 在PC的输出和存储器地址的输入之间的加入了一个2选1多路选择器。多路选择器的一个输入来自于PC,另一个输入则来自IR的低四位,IR4-0。

47 操作数 指令:LOAD、STORE、ADD、SUB 存储器 加-减单元 多路选择器的一个输入来自于PC,
另一个输入则来自IR的低5位,IR4-0。 用地址作为操作数。 它们的存储器地址是由IR的低五位给定的。 2选1多路选择器的选通信号是Meminst。 存储器 大小增加到32个位置,因此需要5比特位宽 LOAD & STORE指令:为了把数据从存储器中读出,也能把A的值赋给特定地址存储器,需要用一个RAM来代替之前的ROM。 为了实现STORE操作,把A的输出与存储器的数据输入D7-0相连。 当信号MemWr有效时,则把A的值写入内存的指令地址。 存储器的输出Q7-0与累加器A的相连是为了执行LOAD的指令, 通过4选1多路选择器 加-减单元 为了执行ADD和SUB指令 多路选择器的选通信号为Asel1-0,第四个多路选择端没有使用

48 反馈信号 两个条件跳转指令JZ和JPOS 数据通路有八个控制信号 数据通路提供2个反馈信号
数据通路提供给状态机两个反馈信号,Aeq0和Apos。 如果A的值是0,则Aeq信号输出为1,故只需一个8输入NOR门。 如果A的值是正数,则Apos为1,因为A是补码表示,首位为0表示正数,首位为1表示负数,所以Apos只须等于A7的取反信号。 数据通路有八个控制信号 IRload, JMPmux, PCload, Meminst, MemWr, Asel1-0, Aload 和Sub 数据通路提供2个反馈信号 Aeq0 和 Apos。

49 控制单元-2 状态图 EC-2的DECODE状态需要通过分支到8个不同的状态以便执行对应的8个指令来解码8位指令编码
EC-2三个指令LOAD、ADD和SUB需要涉及存储器访问问题。只有解码指令之后,控制单元才知道存储器哪个特定地址是需要被读取的。 在我们的设计中,使用DECODE状态执行完成存储器特定地址读取的操作;这样,当控制单元到达执行状态时,存储器已经准备好了数据。 在此设计中,是因为它通过设置DECODE状态的Meminst信号有效,使得存储器读取操作执行,不冲突

50 控制信号 控制信号设置 LOAD A指令 执行STORE A指令
在跳转到START状态前,状态表的INPUT状态将等待ENTER键信号。需要一个电路产生只持续一个时钟长度的有效按键信号 控制信号 控制信号设置 LOAD A指令 Asel1信号需要置1,而Asel0需要置0,为了多路选择器输入端口2使得存储器输出能到达A的输入。而A的实际加载是通过使Aload信号置1实现的。 执行STORE A指令 需要通过使Meminst置1使得存储器地址来自于IR,当MemWr置1时,则将写入存储器。

51 状态转换 次态表和激励方程

52 控制信号 输出方程

53 控制单元 电路图

54 完整电路-2 连接数据通路、控制电路和状态信号

55 示例程序-2 用文件PROGRAM.MIF的内容进行初始化 文件包含3个程序: GCD为计算两个输入的最大公约数的程序;
SUM计算1至n之间所有数的和的程序; COUNT展示把输入n减至0的程序。

56

57 硬件实现-2 EC-2微处理器的输入输出设备之间的接口 输入由8个DIP开关组成,输出是2个七段数码管显示。
使用一个LED来显示我们的微处理器是否已经停止工作,使用一个按钮作为复位按钮。 当Enter开关每次被按压时,一个单触发电路用来产生一个时钟周期的脉冲。 将系统输入的时钟进行分频可以看到一些中间结果的显示。

58 微处理器设计EC-2的Verilog实现(自学)
例p82 2选1多路选择器 PC寄存器 Verilog代码综合出的电路 CU(控制单元)代码p84 DP(数据通路)代码p87 得到微处理器p89 将CU和DP模块连接起来Verilog代码

59 课后作业 1)查阅: 2)作业: 3)阅读: 国际电路公司的CPU、MCU、DSP:
EE141 课后作业 1)查阅: 国际电路公司的CPU、MCU、DSP: 8051,PIC,AVR单片机, ARM,MIPS,DSP等微控制器芯片的型号、类型、速度…… 图书馆资源:电子器件天地, 软件 ftp:// 2)作业: P ,10.2,10.3,10.4; 6月20日前交 3)阅读: 复习《数字系统设计与Verilog HDL》 Spring ZDMC – Lec. #13

60 EE141 课后作业 4)Project Project2(选做平时成绩加分):用具体逻辑电路描述设计并FPGA实现一个4bit简单CPU实物。(期末考试周前最后一次课交) Spring ZDMC – Lec. #13 Spring ZDMC – Lec. #13


Download ppt "数字系统设计 Digital System Design"

Similar presentations


Ads by Google