【机组】基于FPGA的32位算术逻辑运算单元的设计(EP2C5扩充选配类)
温馨提示:这篇文章已超过402天没有更新,请注意相关的内容是否还可用!
⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。
目录
一、实验目的
二、实验要求
三、实验说明
四、实验步骤
实验一 不带进位位逻辑或运算实验
实验二 不带进位位加法运算实验
实验三 带进位的加法运算实验
实验四 数据输入通用寄存器
实验五 寄存器内容无进位位左移实验
实验六 寄存器内容无进位位右移实验
实验七 32位ALU实验
实验八 32位寄存器实验
实验九 32位寄存器组实验
实验十 32位程序计数器 PC实验
实验十一 中断控制实验
📝总结
一、实验目的
1、掌握运算器的数据传输方式。
2、掌握74LS181的功能和应用。
3、学习并掌握利用FPGA器件通过原理图进行算术逻辑单元的设计。
二、实验要求
1、完成32位不带进位位算术、逻辑运算实验。按照实验步骤完成实验项目,了解算术逻辑运算单元的运行过程。
2、通过原理图配置EP2C5的内部电路结构,使其替代分离的算术逻辑运算单元的设计。
三、实验说明
1、ALU单元实验构成
(1)运算器由8片74LS181构成32位字长的ALU单元。
(2)8片74LS374作为数据锁存器,8片74LS244作为数据驱动器,8个8芯插座作为数据输入端,可通过长8芯扁平电缆,把数据输入端连接到二进制开关上。
运算器的数据输出由4片74LS244(输出缓冲器)来控制,4个8芯插座作为数据输出端,由开关控制显示32位输出结果。可通过8芯扁平电缆线把数据输出端连接到微指令LED灯上。
2、ALU单元的工作原理
CLK有上升沿时,把来自数据总线的两路32位数据打入输入锁存器。
算术逻辑运算单元的核心是由8片74LS181组成,它可以进行2个32位二进制数的算术逻辑运算,74LS181的各种工作方式可通过设置其控制信号来实现(S0、S1、S2、S3、M、CN)。当实验者正确设置了74LS181的各个控制信号,74LS181会运算数据锁存器DR1(对应通道1数据)、DR2(对应通道2的数据)内的数据。由于DR1、DR2已经把数据锁存,只要74LS181的控制信号不变,那么74LS181的输出数据也不会发生改变。
输出缓冲器采用4片74LS244,当控制信号ALU-O为低电平时,两片74LS244导通,把74LS181的运算低位结果输出到数据总线,并在微指令单元LED上显示。
3、控制信号说明
| 信号名称 | 作 用 | 有效电平 |
| CLK | 寄存器工作脉冲 | 上升沿有效 |
| S0~S3 | 74LS181工作方式选择 | 见附表 |
| M | 选择逻辑或算术运算 | 高电平为逻辑运算,低电平为算术运算 |
| CN | 有无进位输入 | 高电平有效 |
| CLK | 进位寄存器的工作脉冲 | 上升沿有效 |
| ALU-OUT | 74LS181计算结果16位输出至总线 | 低电平有效 |
四、实验步骤
实验一 不带进位位逻辑或运算实验
将右板中间的计算机组成原理连线板拔下,换成8位/16位/32位计算机组成原理与系统结构 扩展板。
把IO1(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J2插座相连(对应二进制开关S9~S16);把IO2(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J4插座相连(对应二进制开关S17~S24);把IO9(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J5插座相连(对应二进制开关S25~S32);把IO10(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J10插座相连(对应二进制开关S40~S47)。(S9~S16,S17~S24,S25~S32,S40~S47为32位数据输入通道1)。
把IO5(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J3插座相连(对应二进制开关S1~S8);把IO6(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J13插座相连(对应二进制开关S33~S48);把IO13(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J14插座相连(对应二进制开关S49~S56);把IO14(8芯的盒型插座,FPGA扩展实验区)与母板上的二进制开关单元中J01插座相连(对应二进制开关H16~H23)。(S1~S8,S33~S48,S49~S56,H16~H23为32位数据输入通道2)。
把IO7(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J3插座相连(对应LED灯,L17-L24);把IO8(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上J11插座相连(对应LED灯L42-L57);把IO15(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J12插座相连(对应LED灯,L58-L65),把IO16(8芯的盒型插座,FPGA扩展实验区)与母板上微指令单元M04插座相连(对应微指令LED灯L1-L8),扩展板上L17-L24,L42-L57,L58-L65及母板上L1-L16,为32位数据输出。
把IO188(CLK)用连线连到脉冲单元的PLS1上作为输入寄存器控制时钟信号。
把IO191(ALU-O)用连线连到二进制单元的H6上作为输出允许控制信号。
把IO193(S3), IO197(S2), IO168(S1), IO164(S0)用连线分别连到二进制单元的H5,H4,H3,H2上用于控制74LS181的工作方式。
把IO162(M)用连线连到二进制单元的H1上用于控制74LS181的算术运算还是逻辑运算。
把IO160(CN)用连线连到二进制单元的H0上用于控制74LS181的带进位还是不带进位。
| FPGA扩展板接口 | 左侧板接口 |
| I01(输入A[31:24]位) | J2(扩展板二进制开关S9-S16) |
| I02(输入A[23:16]位) | J4(扩展板二进制开关S17-S24) |
| IO9(输入A[15:8]位) | J5(扩展板二进制开关S25-S32) |
| IO10(输入A[7:0]位) | J10(扩展板二进制开关S40-S47) |
| I05(输入B[31:24]位) | J1(扩展板二进制开关S1-S8) |
| I06(输入B[23:16]位) | J13(扩展板二进制开关S33-S48) |
| IO13(输入B[15:8]位) | J14(扩展板二进制开关S49-S56) |
| IO14(输入B[7:0]位) | J01(母板二进制开关H16-H23) |
| I07(输出[31:24]位) | J3(扩展板L17-L24) |
| I08(输出[23:16]位) | J11(扩展板L42-L57) |
| IO15(输出[15:8]位) | J12(扩展板L58-L65) |
| IO16(输出[7:0]位) | M04(母板L1-L8) |
| IO188(输入寄存器时钟CLK) | 时序单元PLS1 |
| IO191(输出使能ALU-O) | 母板二进制开关H6 |
| IO193(S3), IO197(S2), IO168(S1), IO164(S0) | 母板二进制开关H5,H4,H3,H2 |
| IO162(工作模式选择M) | 母板二进制开关H1 |
| IO160(进位模式选择CN) | 母板二进制开关H0 |
把ALTERA下载器一端连到微机的并口,一端连接到FPGA扩展区的JTAG口,打开实验系统电源,把计算机组成原理32位\实验1 不带进位位逻辑或运算\alu32文件夹中的alu32.sof程序下载到FPGA。
二进制开关作为数据输入通道1,置33333333H(对应开关如下表)。
| S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | 数据总线值 |
| A31 | A30 | A29 | A28 | A27 | A26 | A25 | A24 | A[31:24]位数据 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
| S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | 数据总线值 |
| A23 | A22 | A21 | A20 | A19 | A18 | A17 | A16 | A[23:16]位数据 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
| S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | 数据总线值 |
| A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A[15:8]位数据 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
| S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | 数据总线值 |
| A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | A[7:0]位数据 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
二进制开关作为数据输入通道2,置55555555H(对应开关如下表)。
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | 数据总线值 |
| B31 | B30 | B29 | B28 | B27 | B26 | B25 | B24 | B[31:24]位数据 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
| S33 | S34 | S35 | S36 | S37 | S38 | S39 | S48 | 数据总线值 |
| B23 | B22 | B21 | B20 | B19 | B18 | B17 | B16 | B[23:16]位数据 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
| S49 | S50 | S51 | S52 | S53 | S54 | S55 | S56 | 数据总线值 |
| B15 | B14 | B13 | B12 | B11 | B10 | B9 | B8 | B[15:8]位数据 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
| H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | B[7:0]位数据 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
置各控制信号如下:
| H6 | H5 | H4 | H3 | H2 | H1 | H0 |
| ALU-0 | S3 | S2 | S1 | S0 | M | CN |
| 0 | 1 | 1 | 1 | 0 | 1 | 0 |
按脉冲单元中的PLS1脉冲按键,在CLK上产生一个上升沿,把33333333H以及55555555H打入输入数据锁存器。
经过74LS181的计算,把运算结果(F=A或B)输出到数据总线上,数据总线上的LED灯显示灯显示77777777H。
实验二 不带进位位加法运算实验
将右板中间的计算机组成原理连线板拔下,换成8位/16位/32位计算机组成原理与系统结构 扩展板。
把IO1(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J2插座相连(对应二进制开关S9~S16);把IO2(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J4插座相连(对应二进制开关S17~S24);把IO9(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J5插座相连(对应二进制开关S25~S32);把IO10(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J10插座相连(对应二进制开关S40~S47)。(S9~S16,S17~S24,S25~S32,S40~S47为32位数据输入通道1)。
把IO5(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J1插座相连(对应二进制开关S1~S8);把IO6(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J13插座相连(对应二进制开关S33~S48);把IO13(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J14插座相连(对应二进制开关S49~S56);把IO14(8芯的盒型插座,FPGA扩展实验区)与母板上的二进制开关单元中J01插座相连(对应二进制开关H16~H23)。(S1~S8,S33~S48,S49~S56,H16~H23为32位数据输入通道2)。
把IO7(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J3插座相连(对应LED灯,L17-L24);把IO8(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上J11插座相连(对应LED灯L42-L57);把IO15(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J12插座相连(对应LED灯,L58-L65),把IO16(8芯的盒型插座,FPGA扩展实验区)与母板上微指令单元M04插座相连(对应微指令LED灯L1-L8),扩展板上L17-L24,L42-L57,L58-L65及母板上L1-L16,为32位数据输出。
把IO188(CLK)用连线连到脉冲单元的PLS1上作为输入寄存器控制时钟信号。
把IO191(ALU-O)用连线连到二进制单元的H6上作为输出允许控制信号。
把IO193(S3), IO197(S2), IO168(S1), IO164(S0)用连线分别连到二进制单元的H5,H4,H3,H2上用于控制74LS181的工作方式。
把IO162(M)用连线连到二进制单元的H1上用于控制74LS181的算术运算还是逻辑运算。
把IO160(CN)用连线连到二进制单元的H0上用于控制74LS181的带进位还是不带进位。
把ALTERA下载器一端连到微机的并口,一端连接到FPGA扩展区的JTAG口,打开实验系统电源,把计算机组成原理32位\实验2 不带进位加法运算\alu32文件夹中的alu32.sof程序下载到FPGA。
二进制开关作为数据输入通道1,置33333333H(对应开关如下表)。
| S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | 数据总线值 |
| A31 | A30 | A29 | A28 | A27 | A26 | A25 | A24 | A[31:24]位数据 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
| S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | 数据总线值 |
| A23 | A22 | A21 | A20 | A19 | A18 | A17 | A16 | A[23:16]位数据 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
| S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | 数据总线值 |
| A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A[15:8]位数据 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
| S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | 数据总线值 |
| A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | A[7:0]位数据 |
| 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 33H |
二进制开关作为数据输入通道2,置55555555H(对应开关如下表)。
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | 数据总线值 |
| B31 | B30 | B29 | B28 | B27 | B26 | B25 | B24 | B[31:24]位数据 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
| S33 | S34 | S35 | S36 | S37 | S38 | S39 | S48 | 数据总线值 |
| B23 | B22 | B21 | B20 | B19 | B18 | B17 | B16 | B[23:16]位数据 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
| S49 | S50 | S51 | S52 | S53 | S54 | S55 | S56 | 数据总线值 |
| B15 | B14 | B13 | B12 | B11 | B10 | B9 | B8 | B[15:8]位数据 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
| H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | B[7:0]位数据 |
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 55H |
置各控制信号如下:
| H6 | H5 | H4 | H3 | H2 | H1 | H0 |
| ALU-0 | S3 | S2 | S1 | S0 | M | CN |
| 0 | 1 | 0 | 0 | 1 | 0 | 1 |
按脉冲单元中的PLS1脉冲按键,在CLK上产生一个上升沿,把33333333H及55555555H打入输入数据锁存器。
经过74LS181的计算,把运算结果(F=A+B)输出到数据总线上,数据总线上的LED显示灯应该显示88888888H。
附74LS181的逻辑(改变程序可设置不同的工作方式)
| 方式 | M=1逻辑运算 | M=0算术运算 | |
| S3 S2 S1 S0 | 逻辑运算 | CN=1(无进位) | CN=0(有进位) |
| 0000 | F=/A | F=A | F=A加1 |
| 0001 | F=/(A+B) | F=A+B | F=(A+B)加1 |
| 0010 | F=/A B | F=A+/B | F=(A+/B)加1 |
| 0011 | F=0 | F=减1(2的补) | F=0 |
| 0100 | F=/(AB) | F=A加A/B | F=A加A/B加1 |
| 0101 | F=/B | F=(A+B)加A/B | F=(A+B)加A/B加1 |
| 0110 | F=A⊕B | F=A减B减1 | F=A减B |
| 0111 | F=A /B | F=A/B减1 | F=A/B |
| 1000 | F=/A+B | F=A 加AB | F=A 加AB加 1 |
| 1001 | F= /(A⊕B ) | F=A加B | F=A加B加1 |
| 1010 | F=B | F=(A+/B)加AB | F=(A+/B)加AB加1 |
| 1011 | F=AB | F=AB减1 | F=AB |
| 1100 | F=1 | F=A加 A | F=A加 A 加1 |
| 1101 | F=A+/B | F=(A+B) 加 A | F=(A+B) 加 A 加1 |
| 1110 | F=A+B | F=(A+/B)加A | F=(A+/B)加A加1 |
| 1111 | F=A | F=A减1 | F=A |
实验三 带进位的加法运算实验
进位电路与通用寄存器、ALU有着非常紧密的关系,算术逻辑单元的进位输出和通用寄存器带进位移动都会影响进位寄存器中的结果。
若实验者在做算术逻辑实验时,选择了算术运算方式,当ALU的计算结果输出至总线时,在CCK上来一个上升沿,将把74LS181的进位输出位(Cn+4)上的值(为了统一进位标识,1表示有进位,0表示无进位),打入进位寄存器中,并且有进位时LED(CY)发光。
| FPGA扩展板接口 | 左侧板接口 |
| I01(输入A[31:24]位) | J2(扩展板二进制开关S9-S16) |
| I02(输入A[23:16]位) | J4(扩展板二进制开关S17-S24) |
| IO9(输入A[15:8]位) | J5(扩展板二进制开关S25-S32) |
| IO10(输入A[7:0]位) | J10(扩展板二进制开关S40-S47) |
| I05(输入B[31:24]位) | J1(扩展板二进制开关S1-S8) |
| I06(输入B[23:16]位) | J13(扩展板二进制开关S33-S48) |
| IO13(输入B[15:8]位) | J14(扩展板二进制开关S49-S56) |
| IO14(输入B[7:0]位) | J01(母板二进制开关H16-H23) |
| I07(输出[31:24]位) | J3(扩展板L17-L24) |
| I08(输出[23:16]位) | J11(扩展板L42-L57) |
| IO15(输出[15:8]位) | J12(扩展板L58-L65) |
| IO16(输出[7:0]位) | M04(母板L1-L8) |
| IO188(输入寄存器时钟CLK) | 时序单元PLS1 |
| IO191(输出使能ALU-O) | 母板二进制开关H6 |
| IO193(S3), IO197(S2), IO168(S1), IO164(S0) | 母板二进制开关H5,H4,H3,H2 |
| IO162(工作模式选择M) | 母板二进制开关H1 |
| IO160(进位模式选择CN) | 母板二进制开关H0 |
3.1 控制信号说明
| 信号名称 | 作 用 | 有效电平 |
| CLK | 输入寄存器工作脉冲 | 上升沿有效 |
| S0~S3 | 74LS181工作方式选择 | 见附表 |
| M | 选择逻辑或算术运算 | 低电平为逻辑运算,高电平为算术运算 |
| CN | 有无进位输入 | 高电平有效 |
| ALU-OUT | 74LS181计算结果16位输出至总线 | 低电平有效 |
3.2实验步骤
将右板中间的计算机组成原理连线板拔下,换成8位/16位/32位计算机组成原理与系统结构 扩展板。
把IO1(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J2插座相连(对应二进制开关S9~S16);把IO2(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J4插座相连(对应二进制开关S17~S24);把IO9(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J5插座相连(对应二进制开关S25~S32);把IO10(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J10插座相连(对应二进制开关S40~S47)。(S9~S16,S17~S24,S25~S32,S40~S47为32位数据输入通道1)。
把IO5(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J1插座相连(对应二进制开关S1~S8);把IO6(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J13插座相连(对应二进制开关S33~S48);把IO13(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J14插座相连(对应二进制开关S49~S56);把IO14(8芯的盒型插座,FPGA扩展实验区)与母板上的二进制开关单元中J01插座相连(对应二进制开关H16~H23)。(S1~S8,S33~S48,S49~S56,H16~H23为32位数据输入通道2)。
把IO7(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J3插座相连(对应LED灯,L17-L24);把IO8(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上J11插座相连(对应LED灯L42-L57);把IO15(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J12插座相连(对应LED灯,L58-L65),把IO16(8芯的盒型插座,FPGA扩展实验区)与母板上微指令单元M04插座相连(对应微指令LED灯L1-L8),扩展板上L17-L24,L42-L57,L58-L65及母板上L1-L16,为32位数据输出。
把IO188(CLK)用连线连到脉冲单元的PLS1上作为输入寄存器控制时钟信号。
把IO191(ALU-O)用连线连到二进制单元的H6上作为输出允许控制信号。
把IO193(S3), IO197(S2), IO168(S1), IO164(S0)用连线分别连到二进制单元的H5,H4,H3,H2上用于控制74LS181的工作方式。
把IO163(M)用连线连到二进制单元的H1上用于控制74LS181的算术运算还是逻辑运算。
把IO162(CN)用连线连到二进制单元的H0上用于控制74LS181的带进位还是不带进位。
把IO161(CCK)用连线连到连到脉冲单元的PLS4上。
把IO160(CY)用连线连到母板微指令单元M15上,作为进位输出指示。
| FPGA扩展板接口 | 左侧板接口 |
| I01(输入A[31:24]位) | J2(扩展板二进制开关S9-S16) |
| I02(输入A[23:16]位) | J4(扩展板二进制开关S17-S24) |
| IO9(输入A[15:8]位) | J5(扩展板二进制开关S25-S32) |
| IO10(输入A[7:0]位) | J10(扩展板二进制开关S40-S47) |
| I05(输入B[31:24]位) | J1(扩展板二进制开关S1-S8) |
| I06(输入B[23:16]位) | J13(扩展板二进制开关S33-S48) |
| IO13(输入B[15:8]位) | J14(扩展板二进制开关S49-S56) |
| IO14(输入B[7:0]位) | J01(母板二进制开关H16-H23) |
| I07(输出[31:24]位) | J3(扩展板L17-L24) |
| I08(输出[23:16]位) | J11(扩展板L42-L57) |
| IO15(输出[15:8]位) | J12(扩展板L58-L65) |
| IO16(输出[7:0]位) | M04(母板L1-L8) |
| IO188(输入寄存器时钟CLK) | 时序单元PLS1 |
| IO191(输出使能ALU-O) | 母板二进制开关H6 |
| IO193(S3), IO197(S2), IO168(S1), IO164(S0) | 母板二进制开关H5,H4,H3,H2 |
| IO163(工作模式选择M) | 母板二进制开关H1 |
| IO162(进位模式选择CN) | 母板二进制开关H0 |
| IO161(CCK) | 时序单元PLS4 |
| IO160(进拉输出CY) | 微指令单元M15 |
将右板中间的计算机组成原理连线板拔下,把ALTERA下载器一端连到微机的并口,一端连接到FPGA扩展区的JTAG口,打开实验系统电源,把计算机组成原理32位\实验3 带进位位的加法运算\alu32文件夹中的alu32.sof程序下载到FPGA。
二进制开关作为数据输入通道1,置65656565H(对应开关如下表)。
| S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | 数据总线值 |
| A31 | A30 | A29 | A28 | A27 | A26 | A25 | A24 | A[31:24]位数据 |
| 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 65H |
| S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | 数据总线值 |
| A23 | A22 | A21 | A20 | A19 | A18 | A17 | A16 | A[23:16]位数据 |
| 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 65H |
| S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | 数据总线值 |
| A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A[15:8]位数据 |
| 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 65H |
| S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | 数据总线值 |
| A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | A[7:0]位数据 |
| 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 65H |
二进制开关作为数据输入通道2,置A7A7A7A7H(对应开关如下表)。
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | 数据总线值 |
| B31 | B30 | B29 | B28 | B27 | B26 | B25 | B24 | B[31:24]位数据 |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | A7H |
| S33 | S34 | S35 | S36 | S37 | S38 | S39 | S48 | 数据总线值 |
| B23 | B22 | B21 | B20 | B19 | B18 | B17 | B16 | B[23:16]位数据 |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | A7H |
| S49 | S50 | S51 | S52 | S53 | S54 | S55 | S56 | 数据总线值 |
| B15 | B14 | B13 | B12 | B11 | B10 | B9 | B8 | B[15:8]位数据 |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | A7H |
| H23 | H22 | H21 | H20 | H19 | H18 | H17 | H16 | 数据总线值 |
| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | B[7:0]位数据 |
| 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | A7H |
置各控制信号如下:
| H6 | H5 | H4 | H3 | H2 | H1 | H0 |
| ALU-0 | S3 | S2 | S1 | S0 | M | CN |
| 0 | 1 | 0 | 0 | 1 | 0 | 1 |
按脉冲单元中的PLS1脉冲按键,在CLK上产生一个上升沿的脉冲,把65656565H及A7A7A7A7H打入输入数据锁存器。
按脉冲单元中的PLS4脉冲按键,在CCK上产生一个上升沿,把74LS181的进位打入进位寄存器中,在有进位的情况下,CY指示灯M15亮,并且数据总线上的LED显示灯应该显示0D0D0D0CH。
实验四 数据输入通用寄存器
一、实验目的
了解通用32位寄存器的组成和硬件电路,利用通用寄存器实现数据的置数、左移、右移等功能。
二、实验要求
按照实验步骤完成实验项目, 实现通用寄存器移位操作。了解通用寄存器单元的工作原理运用。
三、实验说明
1、寄存器实验构成:
通用寄存器由4片74LS198构成32位字长的寄存器单元。四个8芯插座作为数据输入端,可通过8芯数据电缆,把数据输入端连接到二进制开关总线上。
数据输出由4片74LS244(输出缓冲器)来控制。用32个FPGA IO作为数据输出端,通过32根数据线连接到微指令的LED灯上。
2、通用寄存器单元的工作原理
通用寄存器单元的核心部件为4片74LS198,它具有锁存、左移、右移、保存等功能。各个功能都由X1、X2信号和工作脉冲CLK来决定。X0=1、X1=1,CLK有上升沿时,把总线上的数据打入通用寄存器。可通过设置X0、X1来指定通用寄存器工作方式。
输出缓冲器采用74LS244,把通用寄存器内容输出到总线。
3、控制信号说明
| 信号名称 | 作 用 | 有效电平 |
| CLK | 通用寄存器工作脉冲 | 上升沿有效 |
四、实验步骤
将右板中间的计算机组成原理连线板拔下,换成8位/16位/32位计算机组成原理与系统结构 扩展板。
把IO1(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J2插座相连(对应二进制开关S9~S16);把IO2(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J4插座相连(对应二进制开关S17~S24);把IO9(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J5插座相连(对应二进制开关S25~S32);把IO10(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J10插座相连(对应二进制开关S40~S47)。(S9~S16,S17~S24,S25~S32,S40~S47为32位数据输入)。
把IO7(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J3插座相连(对应LED灯,L17-L24);把IO8(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上J11插座相连(对应LED灯L42-L57);把IO13(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J12插座相连(对应LED灯,L58-L65),把IO16(8芯的盒型插座,FPGA扩展实验区)与母板上微指令单元M04插座相连(对应微指令LED灯L1-L8),扩展板上L17-L24,L42-L57,L58-L65及母板上L1-L16,为32位数据输出。
将FPGA扩展板接口IO188,用数据线与左板二进制开关单元PLS1连接,对应74LS198CLK时钟控制信号。
将FPGA扩展板接口IO193,用数据线与扩展板H57连接。
本实验增加了数码管显示输入输出寄存器功能,若要数码管与二进制LED灯同时显示,请进行如下连接:
将将FPGA扩展板接口IO5与扩展板J9相连,IO6与J6相连,IO13与J7相连,IO14与J8相连。
实验连线表如下:
| FPGA扩展板接口 | 左侧板接口 |
| I01(输入A[31:24]位) | J2(扩展板二进制开关S9-S16) |
| I02(输入A[23:16]位) | J4(扩展板二进制开关S17-S24) |
| IO9(输入A[15:8]位) | J5(扩展板二进制开关S25-S32) |
| IO10(输入A[7:0]位) | J10(扩展板二进制开关S40-S47) |
| I07(输出[31:24]位) | J3(扩展板L17-L24) |
| I08(输出[23:16]位) | J11(扩展板L42-L57) |
| IO15(输出[15:8]位) | J12(扩展板L58-L65) |
| IO16(输出[7:0]位) | M04(母板L1-L8) |
| IO5(输入数码管数据) | J9 |
| IO6(输出数码管扫描选通) | J6 |
| IO13(输出数码管数据) | J7 |
| IO14(输入数码管扫描选通) | J8 |
| IO188(输入寄存器时钟CLK) | 时序单元PLS1 |
| IO193(数码管复位) | H57 |
把ALTERA下载器一端连到微机的并口,一端连接到FPGA扩展区的JTAG口,打开实验系统电源,把计算机组成原理32位\实验4 数据输入通用寄存器文件夹中的regist32.sof程序下载到CPLD。
二进制开关作为数据输入通道,置42424242H(对应开关如下表)。
| S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | 数据总线值 |
| A31 | A30 | A29 | A28 | A27 | A26 | A25 | A24 | A[31:24]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | 数据总线值 |
| A23 | A22 | A21 | A20 | A19 | A18 | A17 | A16 | A[23:16]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | 数据总线值 |
| A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A[15:8]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | 数据总线值 |
| A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | A[7:0]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
按脉冲单元中的PLS1脉冲按键,在CLK上产生一个上升沿,把42424242H打入通用寄存器,此时微指令总线上的指示灯应该显示为42424242H。
实验五 寄存器内容无进位位左移实验
一、通用寄存器单元的工作原理:
通用寄存器单元的核心部件为4片74LS198,它具有锁存、左移、右移、保存等功能。各个功能都由X1、X2信号和工作脉冲CLK来决定。X0=1、X1=1,CLK有上升沿时,把总线上的数据打入通用寄存器。可通过设置X0、X1来指定通用寄存器工作方式。
输出缓冲器采用74LS244,,把通用寄存器内容输出到总线。
把IO7(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J3插座相连(对应LED灯,L17-L24);把IO8(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上J11插座相连(对应LED灯L42-L57);把IO15(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J12插座相连(对应LED灯,L58-L65),把IO16(8芯的盒型插座,FPGA扩展实验区)与母板上微指令单元M04插座相连(对应微指令LED灯L1-L8),扩展板上L17-L24,L42-L57,L58-L65及母板上L1-L16,为32位数据输出。
将FPGA扩展板接口IO188,用数据线与右板二进制开关单元PLS1连接,对应74LS198CLK时钟控制信号。
将FPGA扩展板接口IO191,用数据线与右板二进制开关单元H3连接,对应74LS198输出控制信号。
将FPGA扩展板接口IO193,用数据线与右板二进制开关单元H2连接,对应74LS198X1控制信号。
将FPGA扩展板接口IO197,用数据线与右板二进制开关单元H1连接,对应74LS198X0控制信号。
将FPGA扩展板接口IO160,用数据线与左板二进制开关单元H0连接,对应74LS198CLR清0控制信号。
将FPGA扩展板接口IO162,用数据线与H57连接,对应74LS198CLK时钟控制信号。
实验连线表如下:
| FPGA扩展板接口 | 左侧板接口 |
| I01(输入[31:24]位) | J2(扩展板二进制开关S9-S16) |
| I02(输入[23:16]位) | J4(扩展板二进制开关S17-S24) |
| IO9(输入[15:8]位) | J5(扩展板二进制开关S25-S32) |
| IO10(输入[7:0]位) | J10(扩展板二进制开关S40-S47) |
| I07(输出[31:24]位) | J3(扩展板L17-L24) |
| I08(输出[23:16]位) | J11(扩展板L42-L57) |
| IO15(输出[15:8]位) | J12(扩展板L58-L65) |
| IO16(输出[7:0]位) | M04(母板L1-L8) |
| I0188(寄存器工作脉冲) | 时序单元PLS1 |
| I0191(OUT) | H3(二进制开关) |
| I0193(X1) | H2(二进制开关) |
| I0197(X0) | H1(二进制开关) |
| I0160(CLR) | H0(二进制开关) |
| IO162(nRST) | H57 |
把ALTERA下载器一端连到微机的并口,一端连接到FPGA扩展区的JTAG口,打开实验系统电源,把计算机组成原理32位\实验5 寄存器内容无进位位左移文件夹中的regist32.sof程序下载到FPGA。
二进制开关作为数据输入通道,置42424242H(对应开关如下表)。
| S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | 数据总线值 |
| A31 | A30 | A29 | A28 | A27 | A26 | A25 | A24 | A[31:24]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | 数据总线值 |
| A23 | A22 | A21 | A20 | A19 | A18 | A17 | A16 | A[23:16]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | 数据总线值 |
| A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A[15:8]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | 数据总线值 |
| A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | A[7:0]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
置各控制信号如下:
| H3 | H2 | H1 | H0 |
| OUT | X1 | X0 | CLREN |
| 0 | 1 | 1 | 1 |
按脉冲单元中的PLS1脉冲按键,在CLK上产生一个上升沿,把42424242H打入通用寄存器,此时微指令总线上的指示灯应该显示为42424242H,
再改变各控制信号如下:
| H3 | H2 | H1 | H0 |
| OUT | X1 | X0 | CLREN |
| 0 | 0 | 1 | 1 |
按脉冲单元中的PLS1脉冲按键,此时总线上的LED指示灯应该显示84848484H。
再按脉冲单元中的PLS1脉冲按键,使通用寄存器中的值左移,此时总线上的LED指示灯应该显示为09090909H。若一直按PLS1,在总线上将看见数据循环左移的现象。
实验六 寄存器内容无进位位右移实验
一、通用寄存器单元的工作原理:
通用寄存器单元的核心部件为4片74LS198,它具有锁存、左移、右移、保存等功能。各个功能都由X1、X2信号和工作脉冲CLK来决定。X0=1、X1=1,CLK有上升沿时,把总线上的数据打入通用寄存器。可通过设置X0、X1来指定通用寄存器工作方式。
输出缓冲器采用74LS244,,把通用寄存器内容输出到总线。
控制信号说明
| 信号名称 | 作 用 | 有效电平 |
| X0、X1 | 通用寄存器的工作模式 | 见附表 |
| OUT | 16位输出控制信号 | 低电平 |
| CLK | 通用寄存器工作脉冲 | 上升延有效 |
二、实验步骤
将右板中间的计算机组成原理连线板拔下,换成8位/16位/32位计算机组成原理与系统结构 扩展板。
把IO1(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J2插座相连(对应二进制开关S9~S16);把IO2(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J4插座相连(对应二进制开关S17~S24);把IO9(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J5插座相连(对应二进制开关S25~S32);把IO10(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的二进制开关单元中J10插座相连(对应二进制开关S40~S47)。(S9~S16,S17~S24,S25~S32,S40~S47为32位数据输入)。
把IO7(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J3插座相连(对应LED灯,L17-L24);把IO8(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上J11插座相连(对应LED灯L42-L57);把IO15(8芯的盒型插座,FPGA扩展实验区)与计算机组成原理与系统结构扩展板上的J12插座相连(对应LED灯,L58-L65),把IO16(8芯的盒型插座,FPGA扩展实验区)与母板上微指令单元M04插座相连(对应微指令LED灯L1-L8),扩展板上L17-L24,L42-L57,L58-L65及母板上L1-L16,为32位数据输出。
将FPGA扩展板接口IO188,用数据线与右板二进制开关单元PLS1连接,对应74LS198CLK时钟控制信号。
将FPGA扩展板接口IO191,用数据线与右板二进制开关单元H3连接,对应74LS198输出控制信号。
将FPGA扩展板接口IO193,用数据线与右板二进制开关单元H2连接,对应74LS198X1控制信号。
将FPGA扩展板接口IO197,用数据线与右板二进制开关单元H1连接,对应74LS198X0控制信号。
将FPGA扩展板接口IO160,用数据线与左板二进制开关单元H0连接,对应74LS198CLR清0控制信号。
将FPGA扩展板接口IO162,用数据线与H57连接,对应74LS198CLK时钟控制信号。实验连线表如下:
| FPGA扩展板接口 | 左侧板接口 |
| I01(输入[31:24]位) | J2(扩展板二进制开关S9-S16) |
| I02(输入[23:16]位) | J4(扩展板二进制开关S17-S24) |
| IO9(输入[15:8]位) | J5(扩展板二进制开关S25-S32) |
| IO10(输入[7:0]位) | J10(扩展板二进制开关S40-S47) |
| I07(输出[31:24]位) | J3(扩展板L17-L24) |
| I08(输出[23:16]位) | J11(扩展板L42-L57) |
| IO15(输出[15:8]位) | J12(扩展板L58-L65) |
| IO16(输出[7:0]位) | M04(母板L1-L8) |
| I0188(寄存器工作脉冲) | 时序单元PLS1 |
| I0191(OUT) | H3(二进制开关) |
| I0193(X1) | H2(二进制开关) |
| I0197(X0) | H1(二进制开关) |
| I0160(CLR) | H0(二进制开关) |
| IO162(nRST) | H57 |
把ALTERA下载器一端连到微机的并口,一端连接到FPGA扩展区的JTAG口,打开实验系统电源,把计算机组成原理32位\实验6 寄存器内容无进位位右移文件夹中的regist32.sof程序下载到FPGA。
二进制开关作为数据输入,置42424242H(对应开关如下表)。
| S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | 数据总线值 |
| A31 | A30 | A29 | A28 | A27 | A26 | A25 | A24 | A[31:24]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | 数据总线值 |
| A23 | A22 | A21 | A20 | A19 | A18 | A17 | A16 | A[23:16]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | 数据总线值 |
| A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A[15:8]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
| S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | 数据总线值 |
| A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | A[7:0]位数据 |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 42H |
置各控制信号如下:
| H3 | H2 | H1 | H0 |
| OUT | X1 | X0 | CLREN |
| 0 | 1 | 1 | 1 |
按脉冲单元中的PLS1脉冲按键,在CLK上产生一个上升沿,把42424242H打入通用寄存器,此时微指令总线上的指示灯应该显示为42424242H,
再改变各控制信号如下:
| H3 | H2 | H1 | H0 |
| OUT | X1 | X0 | CLREN |
| 0 | 1 | 0 | 1 |
按脉冲单元中的PLS1脉冲按键,此时总线上的LED指示灯应该显示为21212121H。
按脉冲单元中的PLS1脉冲按键,使通用寄存器中的值右移,此时总线上的LED指示灯应该显示为90909090H。若一直按PLS1,在总线上将看见数据循环右移的现象。
附:通用寄存器的逻辑
通用寄存器(8位并入并出移位寄存器)
| CLR | X1 X0 | CLK | SL SR | QA~AH |
| 0 | X X | X | X X | 全 0 |
| 1 | X X | 0 | X X | 保持不变 |
| 1 | 1 1 | 上升沿 | X X | 并行接数A~H |
| 1 | 0 1 | 上升沿 | X 0 | 右移 移入0 |
| 1 | 0 1 | 上升沿 | X 1 | 右移 移入1 |
| 1 | 1 0 | 上升沿 | 0 X | 左移 移入0 |
| 1 | 1 0 | 上升沿 | 1 X | 左移 移入1 |
实验七 32位ALU实验
一、实验要求
用扩展实验板上的开关做为输入,二进制开关及八段数码管做为输出。用VHDL语言编写程序下载到EP2C5Q08中实现32位模型机的ALU功能。
了解32位模型机中算术逻辑运算单元ALU的工作原理和实现方法。学习用VHDL语言描述硬件逻辑,学习使用EDA开发环境。
二、实验目的
32位ALU的VHDL:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY alu32 IS
PORT (
A : IN STD_LOGIC_VECTOR(32 DOWNTO 1);
W : IN STD_LOGIC_VECTOR(32 DOWNTO 1);
S0 : IN STD_LOGIC;
S1 : IN STD_LOGIC;
S2 : IN STD_LOGIC;
D : OUT STD_LOGIC_VECTOR(32 DOWNTO 1);
CIn : IN STD_LOGIC;
COut : OUT STD_LOGIC
);
END alu32;
ARCHITECTURE behv OF alu32 IS
SIGNAL T: STD_LOGIC_VECTOR(33 DOWNTO 1);
BEGIN
T








