提供者:北京爱欧德仪器设备有限公司 发布时间:2018/8/9 18:50:56 阅读次数:5044次 进入该公司店铺
一章CPTH+实验系统简介
一、CPTH+实验系统组成……………………………………………………2
二、CPTH+实验系统使用………………………………………………………2
二章十六位机(FPGA)扩展实验板简介…………………………………2
一、FPGA实验板主要功能…………………………………………………2
二、FPGA实验板组成………………………………………………………2
三、FPGA实验板软件简介……………………………………………………4
四、FPGA实验板使用…………………………………………………………5
三章 QuartusⅡ开发环境使用入门…………………………………………6
四章十六位机扩展实验………………………………………………………13
分部实验一、十六位ALU实验………………………………………………13
分部实验二、十六位寄存器实验……………………………………………14
分部实验三、十六位寄存器组实验…………………………………………14
分部实验四、十六位指令计数器PC实验……………………………………15
分部实验五、中断控制实验…………………………………………………17
实验六、十六位模型机的总体实验………………………………………18
一章CPTH+实验系统简介
一,CPTH+实验系统组成:
CPTH+是我公司新推出的八位机带十六位机接口的计算机组成原理和系统结构实验仪。CPTH+在原CPTH主板的基础上增加十六位机接口,通过选配CPT16十六位机扩展实验板(也称FPGA实验板),完成十六位机计算机组成原理实验。
CPTH+主板以八位机模式,用TTL74系列器件+CPLD构建模型机部件,让学生以可视方式观察CPU内各部件工作过程和模型机的实现。CPT16_1C6实验板以十六位机模式,用15万门EP1C6Q240C8N FPGA芯片构建模型机所有部件,并配置64K×16位存储器,在对八位机了解的基础上,让学生对十六位计算机组成原理有更深刻的理解,实现质的飞跃,为FPGA设计CPU打下基础。
二,CPTH+实验系统使用
CPTH+有两种使用方式:八位机和十六位机两种实验方式。
(1)八位机方式:
CPTH+主板是八位机模式,只需把通信选择开关“KT”拨向“CPTH”一侧,即可构成八位计算机组成原理和系统结构的实验系统。具体使用详见《CPTH超强型计算机组成原理和系统结构实验指导书》。
(2)十六位机方式:
把选配的CPT16十六位机扩展实验板,对应插入“CPTH+主板”上的座,然后把通信选择开关“KT”拨向“CPT16”一侧,即可构成十六位计算机组成原理的实验系统。具体使用详见下面各章节的说明。
二章十六位机(FPGA)扩展实验板简介
一、FPGA实验板主要功能
FPGA(CPT16_1C6)实验板主要是基于EDA设计的计算机组成原理的实验板,它的核心器件是Altera公司的Cyclone 系列15万门EP1C6Q240C8N的FPGA芯片。用该FPGA实验板,通过VHDL语言编程,可设计16位机的部件和模型机,学生将设计好的电路下载到FPGA芯片上,实现16位机的部件和模型机功能;也可完成其它设计性实验和课程设计实验。
二、FPGA实验板组成
(1)AT89S52单片机,主要用于接收PC机命令,完成16位程序存储器读写,管理模型机运行、暂停等功能。
(2)ispLSI 1032E是逻辑控制芯片,负责单片机和模型机总线切换。
(3)EP1C6是模型机主控芯片,相应管脚已连好,JTAG (By.II)是EP1C6芯片的标配下载接口,再配合FPGA实验板的PC机调试软件,可方便地进行各种实验。
(4)IDT71V016是64K×16位存储器,是模型机的程序存储器,能保存大容量程序。
(5)六位8段数码管,用于显示模型机内部寄存器、总线的值,在设计时可将需要观察的内部寄存器、总线值送A,再通过OUT指令送到数码管显示。三只GAL16V8是六位数码管16进制译码器。
(6)L7~L0是8个发光二极管,用于显示模型机内部状态,例如:进位标志、零标志、中断申请标志等。
(7)K0(7…0)~K4(7…0)是40个开关,用于输入外部信号,例如,在做单步实验时,这些开关可用来输入地址总线值、数据总线值、控制信号等。
(8)EP1C6右方的EX1座表示46个扩展的IO 信号,当实验中需要另外的输入输出脚时可以使用这些扩展脚。
实验板框图
(9)EP1C6的管脚连接表
K0.0 | 118 | K3.0 | 85 | D0 | 43 | A8 | 62 | OUT0 | 225 | LDE0 |
K0.1 | 117 | K3.1 | 84 | D1 | 46 | A9 | 64 | OUT1 | 224 | |
K0.2 | 116 | K3.2 | 83 | D2 | 45 | A10 | 63 | OUT2 | 223 | |
K0.3 | 115 | K3.3 | 82 | D3 | 48 | A11 | 65 | OUT3 | 222 | |
K0.4 | 114 | K3.4 | 81 | D4 | 47 | A12 | 53 | OUT4 | 221 | LDE1 |
K0.5 | 113 | K3.5 | 80 | D5 | 49 | A13 | 50 | OUT5 | 220 | |
K0.6 | 108 | K3.6 | 79 | D6 | 59 | A14 | 55 | OUT6 | 219 | |
K0.7 | 107 | K3.7 | 78 | D7 | 56 | A15 | 54 | OUT7 | 218 | |
K1.0 | 106 | K4.0 | 77 | D8 | 61 | CS | 44 | OUT8 | 217 | LED2 |
K1.1 | 105 | K4.1 | 76 | D9 | 60 | WR | 57 | OUT9 | 226 | |
K1.2 | 104 | K4.2 | 75 | D10 | 58 | RD | 8 | OUT10 | 227 | |
K1.3 | 103 | K4.3 | 74 | D11 | 17 | BH | 11 | OUT11 | 228 | |
K1.4 | 102 | K4.4 | 73 | D12 | 16 | BL | 12 | OUT12 | 233 | LED3 |
K1.5 | 101 | K4.5 | 68 | D13 | 15 | OUT13 | 234 | |||
K1.6 | 100 | K4.6 | 67 | D14 | 14 | RST | 21 | OUT14 | 235 | |
K1.7 | 99 | K4.7 | 66 | D15 | 13 | CK | 20 | OUT15 | 236 | |
K2.0 | 98 | L0 | 216 | A0 | 42 | I-REQ | 19 | OUT16 | 237 | LED4 |
K2.1 | 97 | L1 | 215 | A1 | 41 | P10 | 18 | OUT17 | 238 | |
K2.2 | 96 | L2 | 214 | A2 | 38 | OUT18 | 239 | |||
K2.3 | 95 | L3 | 213 | A3 | 39 | OUT19 | 240 | |||
K2.4 | 94 | L4 | 208 | A4 | 204 | OUT20 | 1 | LED5 | ||
K2.5 | 93 | L5 | 207 | A5 | 5 | OUT21 | 2 | |||
K2.6 | 87 | L6 | 206 | A6 | 6 | OUT22 | 3 | |||
K2.7 | 86 | L7 | 205 | A7 | 7 | OUT23 | 4 |
三、FPGA实验板软件简介
双击“CPTH计算机组成原理”快捷图标,在CPTH主界面上,按“打开FPGA扩展窗口”按钮,即可打FPGA扩展板界面,此界面给出了存储器窗口和功能按键,如下图。
①存储器窗口给出了64K×16位存储器内容,用鼠标左键单击存储单元,数据变兰色后,即可修改存储器中的数据。
②八个功能按键
·[连续脉冲],为模型机提供连续的高频脉冲信号。
·[单脉冲],为模型机提供单脉冲信号。
·[暂停],当模型机连续运行时,可暂停程序的运行。
·[复位],使模型机复位。
·[产生中断],为模型机提供中断信号源。
·[连接CPT16],使FPGA实验板和PC机CPTH调试软件联接。
·[保存文件],是将存储器窗口中的数据写到磁盘上。
·[调入文件],从磁盘上读入数据文件,在此窗口中显示。
·[FPGA编程],是将QuartusⅡ开发环境中生成的*.rbf格式文件下载到EP1C6的芯片中,在下载过程中有下载进度显示。
·[打开编程文件],从磁盘上读入*.rbf格式文件。
四、FPGA实验板使用
(1)用串口/USB通信线(出产配置为串口),连接CPTH+主板和PC机相应RS232接口,把选配的CPT16十六位机扩展实验板,对应插入“CPTH+主板”上的座,然后把通信选择开关“KT”拨向“CPT16”一侧,接通CPTH+实验仪电源。
(2)在QuartusⅡ软件中,用VHDL语言设计模型机电路,然后编译、引脚锁定,再编译生成*.sof,再转化为*.rbf格式。如已有*.rbf,步骤(2)可省。
(3)双击“CPTH计算机组成原理”快捷图标,在CPTH主界面上,按“打开FPGA扩展窗口”按钮,单击按键“连接CPT16”,连机后其余按键字体变黑色可用,在CPTH主界面上点击打开文件图标,例如选择“EX6.asm”,点击编译下载,下载完毕后,把源文件生成的机器码自动下载到16位存储器中;然后点击“打开编程文件”,选择cpt16.rbf文件,再点击“FPGA编程”,把模型机电路的cpt16.rbf下载到EP1C6的芯片中。也可用《三章QuartusⅡ开发环境使用入门》中器件编程方法下载。
(4)点击“连续脉冲”按键,程序连续运行,点击“产生中断”按键,看FPGA实验板数码管显示应加“1”变化,点击“暂停”按键,可使程序暂停运行。
三章QuartusⅡ开发环境使用入门
十六位机FPGA 扩展实验板上用的15万门大规模可编程芯片EP1C6是altera公司Cyclone产品,altera公司是世界上大的FPGA/CPLD 生产商之一,其QuartusⅡ6.0开发环境也是电子工程师常用的软件之一,在QuartusⅡ6.0开发环境中可以完成设计输入(原理图、VHDL)、设计编译、设计校验、编程下载等EDA 设计的所有步骤。以QuartusⅡ6.0为例我们来了解在开发环境下EDA 设计的流程
1、建立设计项目。
启动软件,打开QuartusⅡ6.0开发环境,选择菜单[File]的[New Project…]功能。
点击“NEXT”出现如图对话框,在…Name 框内填上项目名例如alu。
点击二次“NEXT”,选择器件,点击二次“NEXT”完成项目名创建。
2、建立设计文件。
输入VHDL 程序。选择菜单[File]的[New]功能,选择“VHDL FILE”,点击“OK”。
在空的文本窗口中输入VHDL 语言,文件名保存为alu.vhdl。
3、把文件添加到项目中
选择菜单[project]的[add/remove…]功能,选择文件“alu.vhdl”,把alu.vhdl文件添加到alu项目中。
4、项目编译
选择菜单[tools]的[compiler tool]功能, 点击 “start”开始编译当前alu项目,编译后如下图。
5、管脚锁定
选择菜单[assignments]的[pin planner]功能。例如把选中的信号名:A[0]拖拉到EP1C6引脚图相应引脚号上,以此类推进行锁定。锁完后重新编译。
6、器件编程
通过重新项目编译后生成的*.SOF文件用于下载。在我们例子中使用的是EP1C6为Cyclone系列,下面我们对其进行编程:
a、先关闭实验板电源,将下载电缆一端插入LPT1(并行口,打印机口),另一端插入CPT16位机(FPGA)实验板的JTAG(By.II)座,打开实验板电源;
b、从菜单“TOOLS”下选择“Programmer”,点击“Hardware serup”选择“ByteBlaster II(LPT1)”,编程模式Mode选择“JTAG”,添加要编程的文件*.SOF,然后点击“Start”开始编程。到目前为止,我们已完成一个完整的设计。
7,编程文件格式转换
点击file\convert prog...后,按下图设置, 设置完后点击“ok”,把*.sof*转换.rbf。
四章十六位机扩展实验
分部实验一、十六位ALU 实验
实验要求:用CPT16 的扩展实验板上的开关做为输入、八段数码管做为输出,用VHDL
语言编写程序,下载到EP1C6 FPGA中,实现十六位模型机的ALU功能。
实验目的:了解十六位模型机中算术、逻辑运算单元(ALU)的工作原理和实现方法学
习用VHDL语言描述硬件逻辑。学习使用EDA开发环境。
实验说明:
在ALU.VHD程序中,A 为累加器,W 为工作寄存器,均为十六位寄存器,W 的值由K1、 K0两组开关共十六位输入,A 的值由K2 、K3 两组开关输入,S0、S1、S2为运算控制位,接在K4开关组的0、1、2个开关上,根据S0、S1、S2的不同,ALU实现的功能参见下表,D为运算结果输出显示在四位八段管LED0..LED3上,CIn 为进位输入,由K4 开关组的3 个开关输入,COut为进位输出,用发光二极管L0 显示其状态。
S2 | S1 | S0 | ALU 实现的功能 |
0 | 0 | 0 | D = A+W 运算结果为A 加W |
0 | 0 | 1 | D = A-W 运算结果为A 减W |
0 | 1 | 0 | D = A|W 运算结果为A 逻辑或W |
0 | 1 | 1 | D = A&W 运算结果为A 逻辑与W |
1 | 0 | 0 | D = A+W+CIn 运算结果为A 加W 加进位 |
1 | 0 | 1 | D = A-W-CIn 运算结果为A 减W 减进位 |
1 | 1 | 0 | D = ~A 运算结果为A 取反 |
1 | 1 | 1 | D = A 运算结果为A A 直接输出 |
实验步骤:
1、打开Quartus的EDA开发环境,选择“Open Project ...”打开“EP1C6\”下的ALU 项目(Quartus的EDA开发环境的使用可参见三章)。
2、充分理解ALU.VHD(源程序见随机光盘)。了解模型机中ALU的实现原理。
3、对ALU项目进行综合/编译,生成ALU.SOF文件,点击“programmer”,选择“JTAG”模式编程,点击“start”即可下载。也可用CPTH的开发环境中FPGA 扩展板的界面上的“FPGA编程”按钮下载ALU.rbf。
4、打开CPTH的开发环境,打开FPGA 扩展板的界面。
5、按“连接CPT16”键,将实验板连接到计算机上。
6、拨动K0 、K1输入W 的值,拨动K2、 K3 输入A的值,拨动K4的0、1、2 位设置运算方式,拨动K4的3位,设置进位,观察八段管LED3-LED0的运算结果,观察发光二极管L0是否有进位输出。
分部实验二、十六位寄存器实验
实验要求:用CPT16 的扩展实验板上的开关做为输入、八段数码管做为输出,用VHDL语言编写程序,下载到EP1C6 FPGA中,实现十六位模型机的寄存器输入输出功能。
实验目的:了解十六位模型机中寄存器的工作原理和实现方法。学习用VHDL 语言描述硬
件逻辑。学习使用EDA 开发环境。
实验说明:
在REG.VHD程序中,D 为输入数据,R 为寄存器,均为十六位寄存器,D 的值由K1、 K0两组开关共十六位输入,R为内部寄存器,用八段管LED3-LED0显示,EN为寄存器选通信号,接在K4开关组的0 个开关上,RST为复位信号,接在开关组K4的7个开关上,CLK为时钟脉冲,由FPGA界面上“单脉冲”按键提供。
实验步骤:
1、打开Quartus的EDA开发环境选择“Open Project ...”打开“EP1C6\”下的REG项目(Quartus的EDA开发环境的使用可参见三章)。
2、充分理解REG.VHD(源程序见随机光盘),了解寄存器的实现原理。
3、对REG项目进行综合/编译生成REG.sof文件,点击“programmer”,选择“JTAG”模式编程,点击“start”即可下载。也可用CPTH的开发环境中FPGA 扩展板的界面上的“FPGA编程”按钮下载REG.rbf。
4、打开CPTH的开发环境,打开FPGA扩展板的界面。
5、按“连接CPT16”键将实验板连接到计算机。
6、拨动K4 的7 位到“1”的位置,输出“复位”信号,观察八段管LED3…LED0 (R 寄存器的输出显示)是否清零,再将K4 的7 位回到 “0”位时,拨动K0 、K1 输入D 的值,拨动K4 的0 位,设置寄存器选通信号“EN”为有效状态(“0”有效),按动FPGA界面上“单脉冲”按键,产生一个时钟信号,观察八段管LED3…LED0 ,看看是否将D 的值存入寄存器R 中并显示出来,拨动开关组K1、 K0 改变D 的值,再将“EN”置于无效状态(“1”位置),按“单脉冲”产生时钟信号,观察八段管LED3…LED0 是否会随着改变。
分部实验三、十六位寄存器组实验
实验要求:用CPT16 的扩展实验板上的开关做为输入、八段数码管做为输出,用VHDL语言编写程序,下载到EP1C6 FPGA中,实现十六位模型机的多个寄存器输入输出功能。
实验目的:了解十六位模型机中寄存器组的工作原理和实现方法。学习用VHDL语言描述硬件逻辑。学习使用EDA 开发环境。
实验说明:
在REGS.VHD程序中,D 为输入数据,为十六位寄存器,D 的值由K1、 K0两组开关共十六位输入,R0..R3 为内部寄存器,R用做内部寄存器显示输出,用八段管LED3..LED0 显示其值,SA、SB 为寄存器选择控制信号,接在K4开关组的0、1 个开关上,RD 为寄存器读信号,接K4的2 个开关上,WR 为寄存器写信号,接在K4的3 个开关上, RST 为复位信号,接在开关组K4 的7 个开关上,CLK 为时钟脉冲,由FPGA界面上“单脉冲”按键提供。
实验步骤:
1、打开Quartus的EDA开发环境,选择“Open Project ... ”打开“EP1C6\ ”下的REGS项目(Quartus的EDA 开发环境的使用可参见三章)。
2、充分理解REGS.VHD(源程序见随机光盘)。了解模型中寄存器组的实现原理。
3、对REGS项目进行综合/编译,生成REGS.SOF文件,点击“programmer”,选择“JTAG”模式编程,点击“start”即可下载。也可用CPTH的开发环境中FPGA 扩展板的界面上的“FPGA编程”按钮下载REGS.rbf。
4、打开CPTH的开发环境,打开FPGA 扩展板的界面。
5、按“连接CPT16”键将实验板连接到计算机。
6、拨动K4 的7 位到“1”的位置,输出“复位”信号,观察八段管LED3…LED0(R 寄存器的输出显示)是否清零,然后将K4的2( RD 信号)、3(WR 信号)位置成1状态,使读写信号都处于无效状态。
9、寄存器组写实验:将K4 的7 位回到时“0”位,拨动K0、K1输入D的值,拨动K4的0、1位设成“00”,选择寄存器R0,拨动K4 的3 位,设置寄存器写信号“WR”为有效状态(“0”有效),按动FPGA界面上“单脉冲”按键,产生一个时钟信号,将D 写入寄存器R0中。拨动K0、K1 开关组,改变D 值,再改变K4的0、1 位设成“01”,选择寄存器R1,按“单脉冲”给出时钟信号,将D存入寄存器R1中,如此将不同的十六位数据分别存R0..R3寄存器中。
10、寄存器组读实验:将K4 的3 位(WR 信号)设成“1”使其无效,将K4 的0、1两位拨成“00”,选择寄存器R0,再将K4 的2 位(RD信号)设成“0”,读出R0中的数据,并输出到八段管LED3…LED0上显示。拨动K4 的2 位,使RD 信号无效,改变K4的0、1 两位选择寄存器R1,再拨动K4的2 位使RD信号有效,读出R1 的值并显示在八段管LED3…LED0上。如此,读出寄存器R2、R3 的值,并观察与写入的数据是否相同。
分部实验四、十六位指令计数器PC 实验
实验要求:用CPT16 的扩展实验板上的开关做为输入、八段数码管做为输出,用VHDL语言编写程序,下载到EP1C6 FPGA 中,实现十六位模型机的指令计数器功能。
实验目的:了解十六位模型机中指令计数器(PC)的工作原理和实现方法。学习用VHDL语言描述硬件逻辑。学习使用EDA 开发环境。
实验说明:下为十六位模型机中PC 的VHDL 语言:
在PC.VHD程序中,D为十六位输入数据,用于表示跳转条件满足时,跳转的目标地址。D 的值由K1、K0两组开关输入。PC 为指令计数器(PC),用八段数码管LED3…LED0 显示其值。C、Z 接在K4 开关组的0、1 个开关上,用于模拟模型机中的进位标志和零标志信号,ELP接K4的2个开关上,为程序跳转控制信号,为“1”时不允许预置PC,为“0”时,根据指令码的3、2 位和C、Z 状态来控制程序是否跳转(见下表说明)。PC1接在K4的3个开关上,表示PC加1 控制信号。IR2、IR3接在K4的4、5 个开关上,表示程序指令的2位和3位,在本模型机实验中,这两用于控制程序的跳转(见下表说明)。RST为复位信号,接在开关组K4的7个开关上,CLK为时钟脉冲,由FPGA界面上“单脉冲”按键提供。
ELP | IR3 | IR2 | C | Z | LDPC |
1 | X | X | X | X | 1 |
0 | 0 | 0 | 1 | X | 0 |
0 | 0 | 0 | 0 | X | 1 |
0 | 0 | 1 | X | 1 | 0 |
0 | 0 | 1 | X | 0 | 1 |
0 | 1 | X | X | X | 0 |
上表中,LDPC 为内部信号,用于控制PC 是否能被预置。
当ELP = 1 时,LDPC = 1 ,不允许PC 被预置。
当ELP = 0 时,LDPC 由IR3 、IR2 、C、 Z 定。
当IR3 、IR2 = 1X 时,LDPC = 0, D 的值在CLK 上升沿打入PC,实现程序的JMP(直接跳转)功能。
当IR3 、IR2 = 00 时,LDPC = C 取反,当C = 1 时,D 的值在CLK 上升沿打入PC实现程序的JC(有进位跳转)功能。
当IR3 、IR2 = 01 时,LDPC = Z 取反,当Z = 1 时,D 的值在CLK 上升沿打入PC实现程序的JZ(累加器为零跳转)功能。
本实验中,RST = 1 时,指令计数器PC 被清0,当LDPC = 0 时,在CLK 上升沿D 的值打入PC,当PC1 = 1 时,在CLK 上升沿PC 加1。
实验步骤:
1、打开Quartus 的EDA 开发环境,选择“Open Project ... ”打开“EP1C6\ ”下的PC 项目(Quartus 的EDA 开发环境的使用可参见三章)。
2、充分理解PC.VHD(源程序见随机光盘),了解模型机中指令计数器的实现原理。
3、对PC 项目进行综合/编译,生成PC.SOF文件,点击“programmer”,选择“JTAG”模式编程,点击“start”即可下载。也可用CPTH的开发环境中FPGA 扩展板的界面上的“FPGA编程”按钮下载PC.rbf。
4、打开CPTH的开发环境,打开FPGA 扩展板的界面。
5、按“连接CPT16”键将实验板连接到计算机。
6、拨动K4 的7 位到“1”的位置输出“复位”信号,使电路处于复位状态。观察八段管LED3…LED0(PC 输出显示)是否清零。
7、PC+1 实验:将K4 的2 (ELP 信号)、3 (PC1 信号)位置成“1”状态,使跳转控制信号处于PC+1 状态。再将K4 的7 位回到时“0”位,退出“复位”状态,按动FPGA界面上“单脉冲”按键,产生一个时钟信号,观察八段管LED3… LED0 的显示,看看PC 是否加1,再给出单脉冲,观察PC 是否再次加1。
8、直接跳转实验:使拨动K0、 K1 输入D 的值,设置跳转的目标地址,拨动K4 的2位设成“0”,使ELP 信号为低,拨动K4 的5 位,将其设成“1”使IR3 为高,将跳转控制设成“直接跳转”方式,按动FPGA界面上“单脉冲”按键,产生一个时钟信号,将D 写入PC 中,观察八段管LED3…LED0,看看PC 是否转到目标地址。
9、条件跳转实验1:拨动K4 的4、5 位,使IR2、 IR3 置成“00”,将跳转控制设置成“判进位跳转”方式。将K4 的0 位设置成“1”,表示有进位,按动FPGA界面上“单脉冲”按键,产生一个时钟信号,观察八段管LED3…LED0 ,看看PC 是否转到D 所指定的目标地址。再将K4 的0 拨成“0”,表示无进位,给出一个单脉冲,观察LED3…LED0,看看PC 是否加1。
10、条件跳转实验2:拨动K4 的5、4 位,使IR3、IR2 置成“01”,将跳转控制设置成“判零跳转”方式。将K4 的1 位设置成“1”,表示累加器为零,按动FPGA界面上“单脉冲”按键,产生一个时钟信号,观察八段管LED3…LED0,看看PC 是否转到D 所指定的目标地址。再将K4 的1 拨成“0”,表示累加器不为零,给出一个单脉冲,观察LED3…LED0,看看PC是否加1。
分部实验五、中断控制实验
实验要求:用CPT16 的扩展实验板上的开关做为输入、八段数码管做为输出,用VHDL语言编写程序,下载到EP1K1C6 FPGA 中,实现十六位模型机中断控制功能。
实验目的:了解十六位模型机中中断控制的工作原理和实现方法。学习用VHDL 语言描述硬件逻辑。学习使用EDA 开发环境。
实验说明:
在INT.VHD程序中,IREN 接K4 的0 位,表示程序执行过程中的取指令操作,中断请求信号只有在此信号有效时(取指令时)才会被响应。IENT 接K4 的1 位,用于在中断返回时,清除中断请求寄存器和中断响应寄存器。ICEN 为输出信号接发光二极管L2,此信号用于控制读中断指令。ACK 接发光二极管L1,显示中断响应信号。REQ 接发光二极管L0,显示中断请求信号。RST 为复位信号,接在开关组K4 的7 个开关上,I_REQ 为中断申请输入信号,由FPGA界面上“产生中断”按键输出到FPGA 扩展板上,CLK 为时钟脉冲,由FPGA界面上“单脉冲”按键提供。
实验步骤:
1、打开Quartus 的EDA 开发环境,选择“Open Project ... ”打开“EP1C6\”下的INT 项目(Quartus 的EDA 开发环境的使用可参见三章)。
2、充分理解INT.VHD(源程序见随机光盘),了解寄存器的实现原理。
3、对INT项目进行综合/编译生成INT.SOF文件,点击“programmer”,选择“JTAG”模式编程,点击“start”即可下载。也可用CPTH的开发环境中FPGA 扩展板的界面上的“FPGA编程”按钮下载INT.rbf。
4、打开CPTH的开发环境,打开FPGA 扩展板的界面。
5、按“连接CPT16”键将实验板连接到计算机。
6、拨动K4 的7位到“1”的位置输出“复位”信号,将K4 的0、1 位拨到“1”的位置,使IREN 和EINT 都处于无效状态,将内部的中断请求寄存器,中断响应寄存器都清零,使其能响应中断,此时只有L2发光二极管亮。
7、中断申请:将K4 的7 位回到时“0”位,使电路正常工作。按下FPGA界面上“产生中断”按键申请中断,FPGA 扩展板上的L0 发光二极管变亮,表示有中断申请。
8、中断响应:将K4 的0 位拨成“0”,也就使IREN 有效,表示取指令操作,扩展板上的L2发光二极管变熄灭,表示已经响应中断。
9、中断处理:按动FPGA界面上“单脉冲”按键,产生一个时钟信号,扩展板上L2、L1、L0发光二极管都亮,表示取指操作取出中断处理指令来执行。
10、中断退出:将K4 的0 位拨成“1”, IREN 置成无效,将K4 的1 位拨成“0”,将EINT 置成有效,发光二极管L2 变亮、L1、L0 变暗,中断申请寄存器和中断响应寄存器清零,表示可以接受下一次中断申请。
实验六十六位模型机的总体实验
实验要求:用CPT16 的扩展实验板上的开关做为输入、八段数码管做为输出,以上面介绍的分部实验为基础,用VHDL语言编写程序,下载到EP1C6 FPGA芯片中,实现一个十六位模型机,模型机要有完整的指令系统,中断处理系统、输入输出系统。
实验目的:了解十六位模型机整机的工作原理和实现方法。用VHDL 语言描述硬件逻辑让FPGA能实现复杂的运算、处理功能。
实验程序:MOV A, #00H
LOOP:
OUT
JMP LOOP
ORG 0E0H
ADD A, #01
RETI
END
实验说明:“CPT16.VHD ”为一个完整的十六位模型机的VHDL 程序,另见随机光盘。
在总体实验中,rst为复位信号,接在开关组K4 的7 个开关上。i_req为中断申请输入信号,由FPGA界面上“产生中断”按键输出到FPGA 扩展板上。clk 为时钟脉冲,由FPGA界面上“单脉冲”按键提供。keyin 输入端口,接在扩展板的K1、K0 开关组上,用于输入外部信号。portout为输出端口,接到LED3…LED0 四个八段数码管上,用于显示输出信号。mem_d为十六位存储器的数据线,mem_a为十六位存储器的地址线,mem_rd为存储器读控制信号,mem_wr为存储器写控制信号,mem_cs为存储器片选信号,mem_bh为
存储器高8 位数据选择信号,mem_bl为存储器低8 位数据选择信号。
实验步骤:
1、打开Quartus的EDA 开发环境,选择“Open Project ... ”打开“EP1C6\”下的CPT16 项目(Quartus的EDA 开发环境的使用可参见三章)。
2、充分理解CPT16.VHD(源程序见随机光盘)。了解十六们模型机的实现原理。
3、对CPT16 项目进行综合/编译,生成CPT16.sof文件,点击“programmer”,选择“JTAG”模式编程,点击“start”即可下载。也可用CPTH的开发环境中FPGA 扩展板的界面上的“FPGA编程”按钮下载CPT16.rbf。
4、打开CPTH的开发环境,再打开FPGA 扩展板的界面,按“连接CPT16”键将实验板连接到计算机,在开发环境的主界面中,打开“\DJCPTH\ASM\”目录下“EX6.ASM”程序,编译下载“EX6. ASM”,下载完毕后,把源文件生成的机器码自动下载到16位存储器中。
5、在FPGA 扩展板的界面,点击“连续脉冲”按键,程序连续运行,点击“产生中断”按键,产生中断请示信号让模型机中断,在中断处理程序中,我们将累加器A 加1中断。返回后输出累加器中的内容。重复点击“产生中断”按键,产生多个中断请示信号,让模型机多次中断,累加器多次加1送数码管显示,观察LED3…LED0输出,是否满足设计要求。点击“暂停”按键,可使程序暂停运行,点击“复位”按键,可使模型机复位。
① 凡本网注明"来源:阿仪网"的所有作品,版权均属于阿仪网,未经本网授权不得转载、摘编或利 用其它方式使用。已获本网授 权的作品,应在授权范围内使用,并注明"来源:阿仪网"。违者本网将追究相关法律责任。
② 本信息由注册会员:北京爱欧德仪器设备有限公司发布并且负责版权等法律责任。
版权声明