




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息科学与工程学院课程设计报告 课程名称: 计算机组成原理与结构 题目: 单周期CPU逻辑设计 年级/专业: XXXXXXXXXXXXXXX X 学生姓名: 王侠侠、李怀民 学号: XXXXXXXXXXXXXXXXXXX 指导老师: XXXX 开始时间:2016年9月15日结束时间:2016年11月15日目 录摘 要一、 设计目的与目标1.1设计目的1.2设计目标二、 课程设计器材2.1 硬件平台2.2 软件平台三、CPU逻辑设计总体方案3.1 指令模块3.2 部件模块四、模块详细设计4.1 指令设计模块4.2 部件设计模块五、实验数据5.1 初始数据5.2 指令数据六、结论和体会七、参考文献
2、摘 要本CPU设计实验以Quartus II 9.0为软件设计平台,以Cyclone采III型号EP3C16F484C6为FPGA实测板。此CPU设计采用模块化设计方案,首先设计指令格式模块,此模块决定CPU各个部件的接口数据容量及数量,再对CPU各个部件独立设计实现,主要涉及的部件有:寄存器组、控制器、存储器、PC计数器、数据选择器、ALU单元以及扩展单元。分部件的设计通过软件平台模拟仿真各部件的功能,在确保各部件功能正确的情况下,将所有部件模块整合在一起实现16位指令的CPU功能。再按照指令格式设计的要求,设计出一套能完整运行的指令,加载到指令存储器中,最终通过在FPGA实测板上实现了加2
3、减1的循环运算效果,若要实现其他效果,也可更改指令存储器或数据存储器的数据而不需要对内部部件进行更改元件。关键词:CPU设计、16位指令格式、模块化设计、Quartus软件、CPU各部件一、 设计目的与目标1.1 设计目的1) 了解Quartus II软件的使用,学习软件环境下设计CPU的基本过程;2) 在Quartus II平台上完成各个单元的设计,加深对每个单元(控制器、寄存器、存储器等)工作原理的理解;3) 对各个单元组合而成的CPU进行指令测试,配合使用模拟仿真,了解指令和数据在各个单元中的传输过程及方向。1.2 设计目标1) 设计一个单周期CPU,能实现基本的指令功能,如ADD,SU
4、B指令实现对操作数加减功能,LW,SW指令实现从存储器取数和存数,J指令实现指令间的跳转。2) 采用模块化设计CPU,通过模拟仿真保证各模块的正确性,以保证最终CPU功能的正确性,能正确地在FPGA板上完成指令设计的效果。3) 通过设计合理的16位指令,实现从存储器取初始数和存数,对初始数进行加减操作,通过修改存储器初始数据,实现FPGA上LED显示无限加n减m的效果。二、 课程设计器材2.1 硬件平台本实验所需的硬件主要有:PC微型计算机和FPGA板-Cyclone III系列,型号EP3C16U484C6实验开发板以及USB连接线。2.2 软件平台1) 操作系统:Win 7;2) 开发平台
5、:Quartus II 9.0集成开发软件;3) 编程语言:VerilogHDL硬件描述语言。三、 CPU逻辑设计总体方案单周期CPU设计方案从宏观上把握主要分为器件模块和指令/数据模块这两大模块,器件模块是指令模块的载体,指令数据在器件上流动,指令数据的格式是器件模块的主宰。所以当设计CPU时,我们采用模块化设计,单独对着两模块进行设计,考虑到指令数据模块的格式决定指令器件模块接口的数据容量大小,所以应先完成指令数据模块的格式设计。图1 CPU宏观设计方案3.1 指令模块3.1.1指令格式简要设计本CPU实验是针对16位指令数据设计的,所以应当合理划分指令数据区间段的指令相应的功能。从下图2
6、可以看出,16位指令数据划分为5个区间段,指令的15-12位作为控制位传入控制器产生控制信号,指令11-9位作为地址1从寄存器取数输出数据到寄存器1号输出口,指令8-6位作为地址2从寄存器取数输出数据到寄存器2号输出口,指令5-3位与指令8-6位作为数据选择器选择地址输入寄存器写地址口,指令5-0位作为扩展单元输入,扩展数据成16位。另外指令11-0位作为扩展输入,扩展成16位数据作为PC计数器的选择器一端。图2 指令格式简要设计图3.2 器件单元模块此模块的设计是CPU设计的核心部分,它主要涉及到CPU中多个器件的设计。我们依然采用模块设计方案,把总体设计拆分成多个相互独立的器件,再对每部分
7、器件单独设计。在此模块中包括:寄存器组、控制器、存储器、PC计数器、数据选择器、ALU单元这六大主要单元。如下图2所示,展示出六大单元的设计方案以及六大单元之间的联系。图3 器件模块设计方案图从上图我们可以看出各单元之间的联系:初始数据从数据存储器RAM中取出,通过两种数据传入方式:一种是不经过数据选择器,另一种是经过数据选择器,数据传入到寄存器组中作为寄存器数据。而后当传入的是地址 数据时,就从寄存器取出,经过ALU运算单元,将数据传入寄存器组中保存或传入数据存储器中保存。在整个过程中,PC计数器自动加1作为地址去指令存储器ROM中取指令作为此轮执行的指令数据,而控制器在整个过程中依据指令数
8、据的指令码产生相应的控制信号(操作码)控制器件的运作,从而完成整个CPU的执行功能。下面我们将对主要的单元进行简要概述。3.1.1 寄存器组寄存器组是作为保存数据的器件,故应使用时钟触发的D触发器(DFFE),等待一个时钟到来将数据传出去。本实验设计为16位CPU,故每个寄存器应为16位,即每个寄存器是由16个D触发器扩展而成。考虑到指令从寄存器取数位数为3位,所以可以设置8个寄存器用于保存数据,如果是写地址的3位指令通过74138(3-8译码器)译码作为寄存器的有效EN使能端输出数据;如果是读地址的3位指令数据通过8位扩展数据选择器(LPM-MUX)选择数据输出。3.1.2 控制器控制器是作
9、为CPU控制信号产生的器件,通过产生控制信号,使其他器件有效或无效,因此控制器的设计显得尤为重要。控制器的设计主要如下:先必须自己设计好各功能指令的4位01码(指令的15-12),然后针对某个控制信号,找出使其为1的功能指令,对每个功能指令的0位上取非,然后4位相与,之后将所有为1的功能指令相或,结果作为此控制信号。对每个控制信号执行重复操作,控制器也就是这些信号的组合。3.1.3 存储器存储器分为两种类型:一种是数据存储器RAM,另一种是地址存储器ROM。考虑到设计的方便,否则使用寄存器设计存储器也是可行的。3.1.3.1数据储存器数据存储器为RAM型,表示可读可写,所以数据储存器有4个端口
10、,当写信号有效时,应给出写的地址及数据,再加上时钟信号,这里的数据存储器采用软件封装好的RAM-1-PORT存储器。3.1.3.2指令存储器指令存储器为ROM型,表示只读,所以地址存储器有2个端口,应给出读的地址信号以及时钟信号这里的数据存储器采用软件封装好的ROM-1-PORT存储器。3.1.4 PC计数器PC计数器主要作为执行一条指令后,地址自动加1到指令存储器中取16位指令作为此轮操作。故PC计数器应能等待一个时钟后将加1后的数据送至指令存取器中,所以它应包括ALU累加器(一端为1)和寄存器(当一个时钟信号到来,将数据输出),书中还包括一个数据选择器,用于设置PC的值,以至于不会无限增长
11、,实现J指令。3.1.5 数据选择器数据选择器主要是解决数据来源问题,通过控制信号使数据选择器选择的数据端口不同,此数据选择器可选用软件封装的2选1选择器。3.1.6 ALU单元ALU单元主要用于将输入端的两个数做加减操作,通过控制信号01的变化产生运算,该ALU可以使用软件封装的加减ALU(LPM-ADD-SUB),当控制信号为1时作加法,为0时作减法。3.1.7 符号扩展单元符号扩展单元主要用于将不够16位的指令数据扩展成16位,作为输入数据的一端参与数据选择器运算,这里我们仅考虑最简单的扩展方式:将不足16位的指令数据由高位向低位依次补0直至数据长度为16位。四、 模块详细设计4.1指令
12、设计模块4.1.1 指令处理流程一般来说,CPU在处理指令时需要经过以下几个过程:(1)取指令(IF):根据程序计数器PC中的指令地址,从指令存储器中取出一条指令,同时PC根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。 (2)指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,由指令的15-12位产生相应的操作控制信号,用于驱动执行状态中的各种操作。 (3)指令执行(EXE):根据指令译
13、码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。 (4)存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。(5)结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。图4 单周期CPU指令处理过程4.1.2 指令格式详细设计本次CPU设计主要有5条功能指令,分别为ADD、SUB、LW、SW、J指令,对这5个功能指令的控制码分别设定为0101/0110/1001/0001/1010,现对5条指令各自的指令格式进行
14、设计:(1) ADD指令0101(4位)rs(3位)rt(3位)rd(3位)reserved此ADD加法指令完成的功能是:将rs3位对应的寄存器的数和rt3位对应的寄存器的数相加,结果数据存放至rd3位对应的寄存器的位置,reserved作为保留位。(2) SUB指令0110(4位)rs(3位)rt(3位)rd(3位)reserved此SUB减法指令完成的功能是:将rs3位对应的寄存器的数和rt3位对应的寄存器的数相减,结果数据存放至rd3位对应的寄存器的位置,reserved作为保留位。(3) LW指令1001(4位)base(3位)rt(3位)offset(6位)此LW指令完成的功能是:将
15、base3位对应的寄存器的数和offset6位扩展成16位数据相加,结果作为数据存储器地址,取出地址对应的数据存放到rt3位对应的寄存器中。(4) SW指令0001(4位)base(3位)rt(3位)offset(6位)此SW指令完成的功能是:将base3位对应的寄存器的数和offset6位扩展成16位数据相加,结果作为数据存储器地址A,将rt3位对应的寄存器的数据取出来,存放到A地址对应的存储器单元中。(5)J指令1010(4位)target(12位)此J指令完成的功能是:将12位地址零扩展成16位,作目标跳转地址。4.2 器件单元模块此模块的设计是CPU设计的核心部分,它是将众多模块整合在
16、一起,在此模块中主要包括:寄存器组、控制器、存储器、PC计数器、数据选择器、ALU单元这六大单元。如下图5所示,展示出模块间整合的总体效果,可以看出,每个模块的功能还是显而易见的,各模块间通过命名一致达到数据双向传输效果。图5 CPU综合模块示意图4.2.1寄存器组由上面总体设计方案中指出,每个寄存器应该由16个D触发器构成,为了避免设计复杂,我们采用迭代的设计方法,即先由单个D触发器设计成包含2个D触发器模块,图6示出了由单个D触发器构成2个D触发器模块。为了避免篇幅颇多,这仅展示由8个D触发器构成最终16个D触发器的示意图,如图7,以及最终16位D触发器综合模块效果,如图8。图6 单个D触
17、发器构成2个触发器图7 8个D触发器构成16个D触发器 图8 16位D触发器综合模块寄存器组作为数据保存的器件,当读取寄存器中的数据时,涉及读地址端口以及对应的输出数据端口,故应该有两个读地址端口,两个写地址端口;当写入寄存器数据时,涉及写的信号、写的地址以及写的数据也应该准备好,故应有一个写地址端口,一个数据准备端口以及一个写信号,同时数据的传送需要在一个时钟信号到来的上升沿操作,故应有一个时钟信号CLK,所以总共端口共有8个。在图9中展示出寄存器组的综合模块。图9 寄存器组综合模块下面我们来看寄存器组综合模块的详细设计,如图10所示。主要有3处值得注意:l 因为我们设计的从寄存器取数的指令
18、位数为3位,所以最多可寻8个寄存器,所以可看到图中示出了8个16位D触发器的综合模块。l 图中还有一个74138译码器,G1端为WE写信号,当要向寄存器存数时,应使写信号有效,同时给出3位需要写的地址,将要写入的数据存至译码生成对应的寄存器中。l 同时图中还有2个8位数据选择器,主要是用于当读取寄存器数据时,给出读取寄存器的地址,对应8位数据选择器输出对应寄存器中的数据。图10 寄存器组详细设计4.2.2控制器控制器的设计是整个CPU的命脉,因为控制器产生的控制信号用于整个CPU运作,针对某条功能指令,控制信号要能准确控制器件的运作。因此必须明确各个控制信号的作用,如下表1所示以及控制信号和功
19、能指令之间的关系,如下表2所示:表1 控制信号的作用信号名无效时作用(0)有效时作用(1)RegDst写寄存器在寄存器堆的地址来自于rt 字段写寄存器在寄存器堆的地址来自于rd字段ALUSrcB寄存器堆Data2 输出符号扩展的立即数ALUOp减法加法RegWrite无在时钟上升沿,写寄存器MemtoReg送往寄存器组写数据输入的值来自ALU送往寄存器组写数据输入的值来自存储器MemWr无在时钟上升沿,写存储器PCSourcePC+1扩展的立即数表2 控制信号和功能指令对应表控制信号ADDSUBLWSWJ功能操作码01010110100100011010RegDst11000ALUSrcB00
20、110ALUOp10110RegWrite11100MemtoReg00100MemWr00010PCSource00001由上表所示,我们可以容易得到每个控制信号的逻辑表达式,方法如下:找出某个信号在所有功能指令中为1的量,对相应功能操作码为0的位置改为非,再将4位相与,对不同的功能指令之间相或。假设功能操作码的4位从左向右依次对应S3、S2、S1、S0,则可以得出所以控制信号表达式:RegDst=S3S2S1S0+S3S2S1S0;ALUSrcB=S3S2S1S0+S3S2S1S0;ALUOp=S3S2S1S0+ S3S2S1S0+S3S2S1S0;RegWrite=S3S2S1S0+S3
21、S2S1S0+ S3S2S1S0;MemtoReg= S3S2S1S0;MemWr=S3S2S1S0;PCSource=S3S2S1S0;对应的逻辑电路图即是与非门的组合,如图11,示出了ALUOp的电路图实现,输入指令15-12的4位,通过功能指令内的相与和功能指令间的相或得出最后控制信号ALUOp的值,对于其他信号的电路实现这里就不举例了。图11 ALUOp控制信号的电路实现按照上述示例对所有控制信号的电路都能实现,则需要将所有控制信号模块整合在一起,因此可以得出如图12的控制器详细设计:输入的是指令15-12的控制码,输出7个控制信号,从图13可以看到控制器的综合模块接口。图12 控制器
22、的信号组合图13 控制器综合模块4.2.3存储器为了省去不必要的设计,存储器模块我们采用的是软件封装好的Memory。本次设计将存储器分为数据存储器和指令存储器:数据存储器使用RAM-1-PORT,可读可写,主要用于存放数据,用于寄存器取数和存数;指令存储器使用ROM-1-PORT,只读,用于存放16位指令数据。4.2.3.1 数据存储器从图14可以看出,数据存储器RAM有4个输入端和1个输出端,能够实现将数据写入存储器操作,应该要有准备写入的数据,要写入的地址以及内存写操作控制信号,同时应有时钟信号控制,对应的输出端即从内存取出的数据。图14 数据存储器RAM4.2.3.2 指令存储器从图1
23、5可以看出,指令存储器ROM有2个输入端和1个输出端,能够实现将指令数据从指令存储器中取出,输入端应有准备要取出指令的地址以及时钟信号,输出端即从指令存储器中取出的16位指令。图15 指令存储器ROM4.2.4 PC计数器程序计数器是用于当每个时钟的上升沿到来后,PC计数器就自增1从指令存储器中取出对应增1的地址的指令数据,作为本轮运算的指令。所以PC计数器模块应该由图16所示的三部分组成:自增1的ALU单元、PC跳转数据选择器(主要用于实现J指令)以及暂存增1的指令数据的16位寄存器。从图中可以看出,PC计数器只要在时钟信号上升沿到来时就将增1的地址送入指令存储器中,因为在暂存增1地址的寄存
24、器输出端的16位地址,不经任何信号控制就送入ALU的一端,与1相加,在本次时钟上升沿就能将结果送入暂存寄存器中,等待下次时钟信号的到来,输出去的是已经增1的地址了,或是由J指令直接指定的目标地址。图16 PC计数器综合模块4.2.5数据选择器数据选择器主要用于根据控制信号,来选择对应的数据端输入,在本次设计中用到4处数据选择器,其内部实现都是采用软件封装的2选1数据选择器,在图19中展示出PC数据选择器具体实现方法,其他数据选择武器实现类似。下面介绍4处数据选择器,分别是:l 根据MemtoReg信号判断写入寄存器的数据是来自于ALU或是存储器,如图17所示;图17 写入寄存器数据选择器l 根
25、据PCSource控制信号,判断PC计数器的下一条地址是来自于PC+1还是来自于J指令指出的目标地址,主要用于J指令的跳转,如图18是PC数据选择器的综合模块,图19是其具体实现方案,主要采用2选1数据选择器。图18 PC数据选择器图19 PC数据选择器内部实现l 根据RegDst信号确定写入寄存器的地址是来自于指令数据的5-3位还是8-6位,如图20所示。图20 写入寄存器地址数据选择器l 根据ALUSrcB控制信号确定ALU单元的输入B端的数据来源,主要用于LW指令中,判断存储器地址是由寄存器的1端和2端相加得到还是由寄存器的1端和指令后6位扩展成16位相加得到,如图21所示。图21 AL
26、U的B端数据选择器4.2.6 ALU单元ALU单元主要用于将两端输入数据进行加或减操作,从图22可以看到,ALU综合模块,有3个输入端,分别是输入数据A、B端和控制信号,对应输出端是AB端加或减的结果。从图23我们了解ALU模块的内部实现,ALU的实现主要是应用软件的ALU_ADD_SUB,器件做加或减的操作来自于ALUOp的控制,当ALUOp位1时,做加法;当为0时,做减法。图22 ALU综合模块图23 ALU模块内部实现4.2.7 扩展单元扩展单元主要用于填补数据的不足,此次设计的扩展单元为最简单的扩展,即对于输入不足的数据,在其高位上依次补0直至凑够16位数。设计中主要用到两处扩展:l
27、当执行LW指令时,基址中的数据和指令后6位数据扩展成16位数据相加,结果作为存储器的地址,从存储器取数,如图24所示。图24 指令后6位扩展16位l 当执行J指令时,由J指令的后12位扩展成16位作为目标跳转地址,如图25所示。图25 指令后12位扩展16位作为跳转目标地址4.2.8 FPGA实验板数码管显示此模块主要解决结果输出显示在FPGA实验板上的问题。设计的CPU位16位,但是FPGA实验板的数码管每个数字有8位,有4个数码管,所以应该让结果的4位对应数码管的8位显示,故需要使用Verilog语言按照引脚对应编写,如下是4位结果对应数码管8位显示。图26是对应策略的模块,可以看到,使用
28、了4个此模块,分别将结果数据的3-0、7-4、11-8、15-12对应显示管的7-0、15-8、23-16、31-24。module changer(IN,OUT);input 3:0IN;output 7:0OUT;reg7:0 OUT;alwaysbegincase(IN)'b0000 : OUT = 'b11000000;'b0001 : OUT = 'b11111001;'b0010 : OUT = 'b10100100;'b0011 : OUT = 'b10110000;'b0100 : OUT = 'b
29、10011001;'b0101 : OUT = 'b10010010;'b0110 : OUT = 'b10000010;'b0111 : OUT = 'b11111000;'b1000 : OUT = 'b10000000;'b1001 : OUT = 'b10010000;'b1010 : OUT = 'b10001000;'b1011 : OUT = 'b10000011;'b1100 : OUT = 'b11000110;'b1101 : OUT =
30、'b10100001;'b1110 : OUT = 'b10000110;'b1111 : OUT = 'b10001110;endcaseendendmodule图26 显示对应模块显示还有一步骤是将上述总模块编译成功后,会有32个输出端口,按照引脚对应接在如图27的引脚图上。图27 实验板引脚图另外还有一个显示问题是:时钟信号太快,人肉眼来不及观察,所以应将时钟延长,所以采用如图28所示的时钟计数器,输入的时钟信号经过时钟计数器产生24个时钟信号,器件使用最高位时钟信号,即C23,这样相当于延长了时钟信号,便于人眼观察数码管的显示。图28 时钟计数器
31、五、 实验数据实验数据包括两大部分:数据存储器中存储初始数据、指令存储器中存储指令数据,现分别对两部分数据展示。5.1 数据存储器初始数据数据存储器中存放初始数据如表3,在数据存储器中以二进制存在,这里表述使用16进制,表示的意思是:在数据存储器中,地址0H,1H,2H,3H存放的初始数据是0002H,0001H,0003H,0004H。表3 数据存储器数据表Address+00+01+10+110000000000000000100000000000000001000000000000001100000000000001005.2 指令存储器指令数据指令存储器中存放指令数据如表4,在指令存储
32、器中以二进制存在。它表达的意思需要结合功能指令的格式进行分析。具体分析如下:表4 指令存储器数据表Address+000+001+010+011+100+10100100100000100000010010000100000010101000001000000101000000000010001100000100000001010000000000010前两条指令的前4位功能操作码为1001,是LW指令。根据LW指令的格式,第一条指令将寄存器000中的数据和000000扩展成16位0000H相加结果为0000H(初始寄存器000数据为0000H)作为数据存储器的地址(实验中取结果的4-0位作为地址)0H号地址取出原始数据0002H,存放至寄存器001号中;第二条指令将寄存器000中的数据和000001扩展成16位0001H相加结果为0001H(初始寄存器000数据为0000H)作为数据存储器的地址1H号地址取出原始数据0001H,存放至寄存器010号中;第三条指令的前4位功能操作码为0101,是ADD指令。根据ADD指令的格式,将寄存器000号中的数据(初始还是0000H)和寄存器001号中的数据0002H(存储器取出放至寄存器001中的)相加结果送入寄存器000号中。第四条指令的前4位功能操作码为1010,是J指令。根
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电动汽车的商业化运营模式与分析试题及答案
- 家居市场2025年线上线下融合模式创新模式下的家居行业产业创新研究报告
- 电池生产厂家考题试题及答案
- 家具行业设计的企业社会责任与实践探讨试题及答案
- 职业防护测试题及答案
- 建筑施工安全管理信息化在施工现场安全教育与培训中的应用报告
- 西北农林科技大学《计算力学》2023-2024学年第二学期期末试卷
- 全球流媒体市场2025年竞争格局及内容创新模式深度报告
- 电脑采购面试题及答案
- 幼儿园音乐试题及答案
- 高速铁路概论单元高速铁路发展概况课件
- 宁波浙大宁波理工学院招聘13名事业编制工作人员笔试历年参考题库附带答案详解
- 精神科医疗质量指标十二项控制评价体系
- 延安精神知识讲座课件
- 上海市金山区2025届高三高考二模地理试卷(含答案)
- 《电气控制技术》课件-反接制动控制
- 2024年初级会计实务考试真题及答案(5套)
- 2024年高考化学真题完全解读(广东卷)
- 预防老年人痴呆
- 三年级信息科技第23课《分解描述问题》教学设计、学习任务单及课后练习
- 数据库应用技术-第三次形考作业(第10章~第11章)-国开-参考资料
评论
0/150
提交评论