一种计算机硬件系列课程的实验装置转让专利

申请号 : CN200810114961.X

文献号 : CN101290724B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 全成斌李山山管晓培赵有健

申请人 : 清华大学

摘要 :

一种计算机硬件系列课程的实验装置,属计算机教学实验仪器技术领域,其特征在于,包括由实验者写入代码的实验芯片;负责系统写入代码、控制板上电路、提供对于实验芯片的支持和监测、对外发出监测内容的控制芯片;负责下载程序到实验芯片和控制芯片的下载芯片,同时附带了控制芯片的通信中转;存储相关实验测试程序以及数据的存储器;数据总线上挂载的除存储器外的手拨开关、指示灯以及数码管;USB通信接口以及串口;供下载芯片存储下载内容的FLASH存储器;各类实验用接口。本发明的优点是,既满足验证性实验又满足了开放式和创新式的实验,在统一的硬件平台上实现了对于计算机硬件系列课程的实验的支持。

权利要求 :

1.一种计算机硬件系列课程的实验装置,其特征在于,采用了2片FPGA分别作为实验芯片和控制芯片,兼容USB接口,该实验装置包括实验芯片、控制芯片、下载芯片、存储器、手拨开关、指示灯、数码管、USB通信接口、串口、FLASH存储器以及各类实验用接口,其中,(1)实验芯片,由实验者写入代码、进行实验;

(2)控制芯片,用于控制板上电路、提供对于实验芯片的实验支持和监测、以及对外发出监测内容,分为三个部分:a)内存总线部分:发出内存总线的所有控制信号,

b)寄存器部分:监听实验芯片的实验内容,

c)通信部分:对外发送消息;

(3)下载芯片,用于下载程序到实验芯片和控制芯片,同时负责时钟分频以及控制芯片对USB接口的通信中转;

(4)存储器,用于存储相关实验测试程序以及数据;

(5)手拨开关,用于向数据总线拨入数据;

(6)指示灯,用于观察总线数据;

(7)数码管,用于观察总线数据监测实验输出;

(8)USB通信接口,用于同控制程序通信;

(9)串口,用于通信;

(10)FLASH存储器,存储供下载芯片存储需录入内容;

(11)各类实验用接口,用于辅助进行各种硬件实验;

上述控制芯片通过数据总线、地址线、内存读写线、寄存器传输线以及数据三态控制线和实验芯片相连,通过数据总线和数据三态控制线和手拨开关相连,通过数据总线、地址线以及数据三态控制线和存储器相连,通过数据总线和地址线分别与指示灯以及数码管相连;上述实验芯片通过数据总线以及地址线分别和存储器、指示灯以及数码管相连,通过数据总线和手拨开关相连,直接与各类实验接口相连;上述串口与控制芯片相连;上述下载芯片通过JTAG线分别与实验芯片和控制芯片相连,和FLASH存储器直接相连,和控制芯片的通信部分直接相连,和USB通信接口直接相连。

说明书 :

技术领域

本发明涉及一种计算机硬件系列课程的实验装置,属计算机教学实验仪器技术领域。

技术背景

目前国内的计算机硬件课程实验一部分呈现出实验平台分散化的特点,各个课程采用了各自独立的实验平台;而另一部分,虽然采用了统一的平台,但是相对来说,整体平台的集成水平稍差,只是原始实验器材的简单堆砌,没有很好的利用可编程器件,发挥其灵活性。

国外的部分高校,硬件课程集中,因而便于他们采用统一的实验平台。目前,很多高校已经采用了基于可编程器件的实验平台来完成实验,但是相对国内来说支持的实验个数和内容是远远达不到要求的。

发明内容

本发明的目的是设计一种计算机硬件系列课程的实验装置,在该实验装置上可以进行计算机系列硬件课程的实验。
本发明提出的计算机硬件系列课程的实验装置包括实验芯片、控制芯片、下载芯片、存储器、手拨开关、指示灯、数码管、USB通信接口、串口、FLASH存储器以及各类实验用接口,其中:
(1)实验芯片,由实验者写入代码、进行实验;
(2)控制芯片,用于控制板上电路、提供对于实验芯片的实验支持和监测、以及对外发出监测内容。主要分为三个部分:
a)内存总线部分:发出内存总线的所有控制信号,
b)寄存器部分:监听实验芯片的寄存器信息等实验内容,
c)通信部分:对外发送消息;
(3)下载芯片,用于下载程序到实验芯片和控制芯片,同时负责时钟分频以及控制芯片对USB接口的通信中转;
(4)存储器,用于存储相关实验测试程序以及数据;
(5)手拨开关,用于向数据总线拨入数据;
(6)指示灯,用于观察总线数据;
(7)数码管,用于观察总线数据监测实验输出;
(8)USB通信接口,用于同控制程序通信;
(9)串口,用于通信;
(10)FLASH存储器,存储供下载芯片存储需录入内容;
(11)各类实验用接口,用于辅助进行各种硬件实验;
上述控制芯片通过数据总线、地址线、内存读写线、寄存器传输线、数据三态控制和实验芯片相连,通过数据总线和数据三态控制线和手拨开关相连,通过数据总线、地址线以及数据三态控制线和存储器相连,通过数据总线和地址线和指示灯以及数码管相连;上述实验芯片通过数据总线以及地址线和存储器、指示灯以及数码管相连,通过数据总线和手拨开关相连,直接与各类实验接口相连;上述串口与控制芯片相连;上述下载芯片通过JTAG线与实验芯片和控制芯片相连,和FLASH存储器直接相连,和控制芯片的通信部分直接相连,和USB通信接口直接相连。
本发明提出的计算机硬件系列课程的实验装置,既满足验证性实验又满足了开放式和创新式的实验,在统一的硬件平台上实现了对于计算机硬件系列课程的实验的支持,使用者可以在本发明装置上进行各计算机硬件系列课程的实验。

附图说明

图1是本发明提出的计算机硬件系列课程的实验装置的结构框图。
图2是本发明装置控制芯片的内部模块运行自动机:图2(1)内存总线控制自动机;图2(2)寄存器监控自动机;图2(3)通信控制自动机。
图3是本发明实验装置的一个实施例的电路图:图3(1)控制FPGA;图3(2)实验FPGA;图3(3)映像下载控制;图3(4)USB通信接口;图3(5)指示灯;图3(6)RAM存储器;图3(7)数码管;图3(8)实验用接口;图3(9)音频接口;图3(10)手拨开关。

具体实施方式

本发明提出的计算机硬件系列课程的实验装置的结构框图如图1所示,包括实验芯片K9、控制芯片K10、下载芯片K3、存储器K7、手拨开关K8、指示灯K5、数码管K6、USB通信接口K2、串口K4、FLASH存储器K12以及各类实验用接口K11。其中:
(1)实验芯片K9,由实验者写入代码、进行实验;
(2)控制芯片K10,用于控制板上电路、提供对于实验芯片K9的实验支持和监测、以及对外发出监测内容;。主要分为三个部分:
a)内存总线部分K10-1:发出内存总线的所有控制信号。
b)寄存器部分K10-2:监听实验芯片K9的实验内容。
c)通信部分K10-3:对外发送消息;
(3)下载芯片K3,用于下载程序到实验芯片K9和控制芯片K10,同时负责时钟分频以及控制芯片对USB接口K2的通信中转;
(4)存储器K7,用于存储相关实验测试程序以及数据;
(5)手拨开关K8,用于向数据总线拨入数据;
(6)指示灯K5,用于观察总线数据;
(7)数码管K6,用于观察总线数据监测实验输出;
(8)USB通信接口K2,用于同控制程序通信;
(9)串口K4,用于通信;
(10)FLASH存储器K12,存储供下载芯片存储需录入内容;
(11)各类实验用接口K11,用于辅助进行各种硬件实验;
上述控制芯片K10通过数据总线、地址线、内存读写线、寄存器传输线、数据三态控制和实验芯片K9相连,通过数据总线和数据三态控制线和手拨开关K8相连,通过数据总线、地址线以及数据三态控制线和存储器K7相连,通过数据总线和地址线和指示灯K5以及数码管K8相连;上述实验芯片K9通过数据总线以及地址线和存储器K7、指示灯K5以及数码管K6相连,通过数据总线和手拨开关K8相连,直接与各类实验接口K11相连;上述串口K4与控制芯片K10相连;上述下载芯片K3通过JTAG线与实验芯片K9和控制芯片K10相连,和FLASH存储器K12直接相连,和控制芯片K10的通信部分K10-3直接相连,和USB通信接口K2直接相连。
设计使用了如下的实验流程:针对具体的实验,控制程序K1通过USB通信接口K2将实验需要的硬件代码发送给下载芯片K3,下载芯片K3将代码存入FLASH存储器K12中。传输完毕后,下载芯片K3将根据需要将K12中的内容下载到控制芯片K10或实验芯片K9中,并启动控制芯片K10。接下来,由控制芯片K10设置板上总线状态,控制和辅助板上的实验芯片K9进行实验。具体实验阶段,实验芯片内运行了实验中实验者编写的代码,同时利用所提供的相关代码形成了一段暂存区域A1,A1中暂存了所有当前实验者关心的实验芯片内的实验数据和内容。控制芯片K10内部同样维护了一段格式相同的暂存区域A2,采用通信线路保持了A2实时的镜像了A1的内容。控制芯片K10对外则可以通过USB接口将自身的A2发送到控制程序,最终由实验者观察到。这样形成了完备而且自由的实验监测流程。
下面结合附图3,详细介绍本发明的一个实施例。
在图1中K1是一个控制程序,主要分为界面模块,监控模块,通信模块,自定义规则的汇编编译模块等部分。界面接受用户的选择将实验内容通过通信模块下载到板上,通过监控模块获取板上实验情况,显示在界面模块。对于需要进行自定义规则汇编编译的实验,自定义规则的汇编编译模块会进行汇编代码到二进制机器代码的自动编译功能。界面模块不仅包括整体的框架界面,同时包括各个实验的小的界面模块,例如在CPU结构的一些实验中,界面模块需要提供针对二进制代码的单步、连续、断点等CPU执行控制界面。
K2是USB通信接口,通过此接口,与K1通信发送来的数据发送到下载芯片K3或者通过K3传输到通信总线上。
K3是下载芯片,主要负责在实验内容的初始化阶段,将实验所需的板上代码下载到FLASH存储器K12中,下载完毕再分别装入控制芯片K10和实验芯片K9中。当需要切换实验或者强行重启动实验的时候,协助发出复位信号。同时,下载芯片还利用它的可编程逻辑,实现分频器的作用。另外所有的情况下,USB的通信内容都是由下载芯片的内部逻辑部分发出的,并且由下载芯片本身根据实验情况确认是否将控制芯片的通信内容发送出去。
K4是一个串口,提供了控制芯片K10与K1连接的另一种方式。
K5是指示灯,用于显示数据总线和地址线上的数据,让实验者了解目前数据总线和地址线的内容。
K6是数码管。对于需要采用数码管显示的实验,形成实验芯片到数码管的通路,进行数据显示。
K7是存储器。在需要存储代码和一些文件的实验中,我们将代码通过数据总线和地址线写入存储器中。对于K7的读写,信号完全是由控制芯片K10来发出的。当需要写存储器K7的时候,控制芯片K10发送给存储器相关的写信号和地址,同时,控制实验芯片K9,保证自身K10与实验芯片K9中,只有一个在数据总线上有效,发出数据。当读取存储器K7的时候,控制芯片K10发送给存储器相关的读信号和地址,同时控制自身K10和实验芯片K9在数据总线上取得所需的数据。
K8是手拨开关。一方面对于需要手拨开关的实验,形成手拨开关与实验芯片K9的连接,进行实验。在较为复杂,形成数据总线的实验中,当需要手动拨入总线数据的时候,由控制芯片K10在数据三态控制线上发布信号,使得手拨开关K8可用,存储器K7不可用,同时控制控制芯片K10自身或者实验芯片K9在数据总线上读取到手拨开关的输入数据。
K9是实验芯片,采用FPGA实现,这里写入实验中进行实验的相关内容。实验芯片K9从控制芯片K10处得到运行的时钟后,将运行过程的需监测信息,通过控制芯片K10和实验芯片K9的通路,也就是寄存器传输线将需要监测的信息发回到控制芯片K10,继而最终传输到控制程序K1由实验者观察到。所有的实验中,实验芯片的实验部分时钟和复位信号都是由控制芯片提供的,而监测线路,则采用独立于实验部分的单独的时钟和复位信号。
K10是控制芯片,同样由一块FPGA芯片实现。控制芯片内的代码是针对实验事先实现完成的,下载后运行,将会围绕实验芯片K9将特定实验所需要的总线状态和监测逻辑配置完毕。在接下来的实验过程中,发送实验芯片K9运行所需的时钟和控制信号,需要数据总线控制的实验中,协同控制总线上的所有器件,发出所有器件的数据三态控制信号,同时在整个实验过程中将实验芯片K9中需要观察的信号通过寄存器传输线获取得到,向上发送。整个控制芯片可以划分为3个部分:
(1)内存总线部分K10-1:发出内存总线的所有控制信号。在数字逻辑和组合逻辑的绝大多数实验中,该部分将内存总线上的存储器部分禁用,使得数据总线成为了外部开关和指示灯数码管连接到实验芯片的形式。该部分形成了如下的自动机如图2(1)所示:
这里我们将内存总线的状态采用了FPGA内部的一个变量Dbs(DataBusStatus)来表示,Dbs只能由控制芯片自身来修改,修改将发生在两种情况下:得到控制程序消息或者控制芯片自身对于总线的利用过程(通常为内存的读写)结束。
在实验的初始阶段,Dbs为0。控制程序发送Dbs修改为1的信号后,控制芯片开始占用总线。之后的部分相对独立的3种状态:控制芯片读写内存、实验芯片读写内存、实验芯片与手拨开关连通。其中第一种状态控制芯片读写内存,在自身结束读写过程后将自动修改Dbs返回1状态,而后两种状态都是由控制程序发送消息修改Dbs到0从而结束的。
(2)寄存器部分K10-2:可在所有实验中存在,作用在于监听实验芯片K9的寄存器信息等实验内容。采用了如图2(2)的状态机:
可以看出,这里采用了一个串行的通信模式,通过一根控制线和若干数据线完成了整个的通信过程。当控制芯片K10发送enable信号的0到1跳变时开始通信,接受完毕后置0复位。我们在实验芯片内部维护了一块暂存区A1,该区域包括了所有可供外部监测的信号,而控制芯片内部保留了一块结构完全类似A1的区域A2,A2成为了A1的一个镜像。控制芯片通过寄存器部分接口的通信,不断得到A1的情况,实时刷新A2。而A2成为了控制程序所能看到的整个区域。
(3)通信部分K10-3:作用都是对外发送消息。采用了如图2(3)的状态机。
类似于Dbs我们在控制芯片内部采用了一个变量Cbs(CommunicationBusStatus)用来确定当前通信的情况。Cbs只能由控制芯片自身修改,修改的理由来源于接收到的控制程序消息。可以这样概括:控制芯片始终是一个接收者,而只有Cbs为1的时候可以发送内容。
K11是各类实验用接口,包括PS2、VGA、音频、单色LCD以及串口和SD卡接口。各类实验接口都直接与实验芯片K9直接连接,需要使用时,在实验芯片K9中附加相应的“驱动程序”即可使用。
K12是一个flash存储器,用来存储下载芯片K3临时装入的控制芯片K10和实验芯片K9的代码。直接与下载芯片K3相连接。
在图3的具体电路实现中:
控制芯片K10即为FPGA_ControlA(参看图3(1)),由一片FPGA构成,型号为EP2C20Q240对外形成了如下的接口信号:



数据总线部分,数据32根信号(FPGAC_Ram_Data(31:0))。地址方面,由于我们采用了实验芯片K9访问总线的地址以及读写控制信号完全由控制芯片K10发出的方式。所以实验芯片访问内存空间的21位地址线(FPGAC_FPGAE_RamAdd(20:0))以及实验芯片访问Ram的读写信号(FPGAE_FPGAC_RamRW)也完全接入了控制芯片,由控制芯片根据状态参考这些信号和自身情况生成对应的总线访问信号。总线访问方面。ram的19位的Ram地址(FPGAC_Ram_Add(18:0))由控制芯片发出,与实验芯片差距的2根可以进行扩展。总线的控制信号涉及到了Ram的3根(FPGAC_Ram_EN/RW/OE)以及手拨开关的一根(FPGAC_Switch_OE)连同对实验芯片访问Ram的一根使能信号(FPGAE_FPGAC_RamRW(2:1)),一共5根,也由控制芯片发出。
寄存器部分采用了4位的传输线(FPGAE_FPGAC_REG(4:1)),加上时钟(FPGAC_FPGAE_RegCLK)和复位(FPGAC_FPGAE_RegReset)的2位信号,以上信号均连接到控制芯片。
复位信号方面,由控制芯片发出对实验芯片的复位(FPGAC_FPGAE_Reset),同时接受硬件复位(HardReset)以及来自下载芯片的复位(EPLD_FPGAC_Reset)。
由于通信接口的设计,控制芯片将自身的信号通过MCU(29:0)这30根通信线,以及2根控制线(EPLD_FPGAC_Control(2:1))构成。其中MCU(29:0)是usb FIFO接口线的总称,包括EPLD_FPGAC_GPIFADDR(7:0)、EPLD_FPGAC_FLAGA、EPLD_FPGAC_FLAGB、EPLD_FPGAC_FLAGC、EPLD_FPGAC_IFCLK、EPLD_FPGAC_FIFODATA(7:0)、EPLD_FPGAC_PKTEND、EPLD_FPGAC_SLWR、EPLD_FPGAC_SLRD、EPLD_FPGAC_SLOE、EPLD_FPGAC_SLOS#、EPLD_FPGAC_GSTATE(2:0)、EPLD_FPGAC_FIFOADDR(1:0).
时钟信号、串口信号以及Jtag信号参看上表说明。
USB通信接口K2由FX2-128芯片构成(图3(4)MCU1)。它是一款自带USB引擎的51单片机,支持Slave模式的FIFO或者GPIF模式,对通信总线有IFCLK、SLOE、FIFOADD[1:0]、PKTEND、FLAGD_SLCS#、FIFODATA[7:0]、GPIFADDR[7:0]、GSTATE[2:0]、SLRD、SLWR、FLAGA、FLAGB、FLAGC,共30个信号与下载芯片K3相连。HardReset信号接板上复位开关。
下载芯片K3由一片EPM3256A(图3(3)EPM3256A)构成。通过EPLD_FPGA_DATAO、EPLD_FGPAC_nSTATUSO、EPLD_FGPAC_nCONFIGO、EPLD_FGPAC_DCLKO、EPLD_FGPAC_CONF_DONEO和EPLD_FPGA_DATA1、EPLD_FGPAC_nSTATUS1、EPLD_FGPAC_nCONFIG1、EPLD_FGPAC_DCLK1、EPLD_FGPAC_CONF_DONE1分别同实验芯片K9和控制芯片K10的JTAG信号相连,形成2路可用的Jtag接口完成对两块FPGA芯片的下载。通过EPLD_FPGAC_Reset和EPLD_FPGAE_Reset这2个信号连接控制芯片K10和实验芯片K9作为软复位信号。通过Clock24M_EPLD接受来自晶振的时钟。通过HardReset连接板上的复位开关。同时将时钟分频分别通过EPLD_FPGAE_Clock[3:1]以及EPLD_FPGAC_Clock[3:1]发送到实验芯片K9和控制芯片K10上。通过FLASH_A[23:0]、FLASH_D[7:0]、FLASH_CE、FLASH_OE、FLASH_WE、FLASH_STS、FLASH_RP#、FLASH_VPEN、FLASH_CE[2:1]与FLASH存储器K12相连接。
串口K4是一个Rs232芯片(图3(8)U5)附加电容插座构成2路串口。通过TXD_FPGAE、RXD_FPGAE和TXD_FPGAC、RXD_FPGAC分别与实验芯片K9和控制芯片K10相连接。其中串口K4的一路作为各类实验用接口K11的串口部分。
指示灯K5由指示灯(图3(5)LED_FA_i,i=1..7)构成。通过FPGAC_FPGAE_RamAdd[20:0]、FPGAE_Led[3:1]与实验芯片K9相连接,通过FPGAC_Ram_Data[31:0]连接到数据总线上。同时,LEDGND[7:1]通过开关接地。
数码管K6由8片LG5011ah(图3(7)DSi,i=1..8)构成,通过FPGAC_FPGAE_RamAdd[20:0]、FPGAE_Led[3:1]与实验芯片K9相连接,通过FPGAC_Ram_Data[31:0]连接到数据总线上。8片LG5011ah通过统一的开关接地。这个开关作为使能开关,可由用户选择是否启用数码管。
存储器K7由4片RAM5128TSOP(图3(6)RAMi,i=1..4)构成。4片RAM5128TSOP使用共同的地址FPGAC_Ram_Add[18:0]连接到控制芯片K10,接受控制芯片K10发送而来的统一的FPGAC_Ram_EN、FPGAC_Ram_OE、FPGAC_Ram_RW信号。每片通过8位连接到数据总线构成FPGAC_Ram_Data[31:0]到数据总线的连接。
手拨开关K8由4组每组8个手拨开关(图3(10)SW_FD_i,i=1..4)构成。分别通过各自的三态芯片74LS240(图3(10)TriStat_SW_FD_i,i=1..4)连接到数据总线,4片74LS240的FPGAC_Switch_OE共同连接到控制芯片K10接受控制,当控制芯片K10决定是否启用手拨开关时,只要向该信号发送对应的高低值即可。
实验芯片K9是一片EP2C20Q240(即图3(2)FPGA_ExamA),和上述模块连接和信号作用已经描述。同时实验芯片K9还和各类实验用接口K11内的各个接口进行连接。每个接口的连接采用了该接口的自身逻辑设计信号在K11部分详述。
各类实验用接口K11包括PS2、VGA、音频、单色LCD以及串口和SD卡接口。PS2接口(图3(8)PS2KB、PS2mouse)通过PS2KB_DATA、PS2KB_CLOCK、PS2MOUSE_DATA、PS2MOUSE_CLOCK形成2套PS2接口,分别作为键盘和鼠标的操作线连接到实验芯片K9。
VGA接口(图3(8)VGA_Portl)通过VGA_R[2:0]、VGA_G[2:0]、VGA_B[2:0]作为数据线连接到实验芯片K9。这些连接都附加了相应的电阻,构成简单的AD转换。同时通过VGA_Vhync和VGA_Hhync作为行场同步连接到实验芯片K9。
音频部分采用了AK4631(图3(8)AK4631VN)作为音频芯片,PDN、CSN、CCLK、CDTI、SDTI、SDTO、FCK、BICK、MCKI、MCKO分别连接到实验芯片K9上。
单色LCD接口(图3(8)LCD1)通过LCD_CTRL_[2:0]作为控制线,通过LCD_DATA_[7:0]作为数据线连接到实验芯片K9上。
SD卡的接口(图3(8)SD1)采用了通用的SD卡槽,由卡槽引出SD_DATA2、SD_DATA3/CD、SD_CMD、SD_CLK/SCLK、SD_DATAO/DO、SD_DATA1/RFS、SD_nCD、SD_WP分别上拉电阻后接入实验芯片K9。
FLASH存储器K12是一片MT28F640J3(图3(3)FLASH1),按照下载芯片K3所述的连接同下载芯片K3相连接。