已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 VHDL并行语句 并行语句结构是VHDL的特色 在VHDL中 并行语句具有多种语句格式 各种并行语句在结构体中的执行是同步进行的 或者说是并行运行的 其执行方式与书写的顺序无关 每一并行语句内部的语句运行方式可以有两种不同的方式 即并行执行方式 如块语句 和顺序执行方式 如进程语句 并行语句在结构体中的使用格式如下 ARCHITECTURE结构体名OF实体名IS说明语句 BEGIN并行语句 ENDARCHITECTURE结构体名 VHDL中不存在纯粹的并行行为和顺序行为的语句 例如 相对于其他的并行语句 进程属于并行语句 而进程内部运行的都是顺序语句 PROCESS结构中的顺序语句 其顺序执行过程只是相对于计算机中的软件行为仿真的模拟过程而言的 这个过程与硬件结构中实现的对应的逻辑行为是不相同的 并行信号赋值语句三种形式 简单信号赋值语句 条件信号赋值语句和选择信号赋值语句 共同点是 赋值目标必须都是信号 所有赋值语句在结构体内的执行是同时发生的 与它们的书写顺序和是否在块语句中没有关系 每一信号赋值语句都相当于一条缩写的进程语句 而这条语句的所有输入 或读入 信号都被隐性地列入此过程的敏感信号表中 任何信号的变化都将启动相关并行语句的赋值操作 而这种启动完全是独立于其他语句的 5 1并行信号赋值语句 5 1并行信号赋值语句 5 1 1 简单信号赋值语句 信号赋值操作 符号 进行信号赋值操作的 它可以用在顺序执行语句中 也可以用在并行处理语句中注意1 用在并行处理语句中时 符号 右边的值是此条语句的敏感信号 即符号 右边的值发生变化就会重新激发此条赋值语句 也即符号 右边的值不变化时 此条赋值语句就不会执行 如果符号 右边是常数则赋值语句一直执行 2 用在顺序执行语句中时 没有以上说法 并行简单信号赋值语句是VHDL并行语句结构的最基本的单元 它的语句格式如下 信号赋值目标 表达式式中信号赋值目标的数据对象必须是信号 它的数据类型必须与赋值符号右边表达式的数据类型一致 通过AFTER给信号赋值 可以描述信号在确定延迟时间后取值的变化 这种适用于非循环的有限变化信号赋值 特别注意此语句中 对 赋值目标 进行赋值的v0 v1 v2等是按顺序执行的 然而AFTER后指定的时间却是同时开始计时的 例如对复位信号的描述可以表示为 其中rest period是Time类型 信号reset初始值为1 有效 经过一个复位时长rest period后变为0 无效 从而实现异步复位 用于仿真的VHDL程序中 常用AFTER语句来描述延迟信息 因而常与Time类型一起使用 于是 用AFTER语句描述其赋值延迟的赋值语句的语法格式如下 5 1并行信号赋值语句 5 1 1 简单信号赋值语句 5 1并行信号赋值语句 5 1 2 条件信号赋值语句 在结构体中的条件信号赋值语句的功能与在进程中的IF语句相同 在执行条件信号赋值语句时 每一赋值条件是按书写的先后关系逐项测定的 一旦发现赋值条件 TRUE 立即将表达式的值赋给赋值目标 条件信号赋值语句的表达方式如下 赋值目标 表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE 表达式 5 1并行信号赋值语句 5 1 2 条件信号赋值语句 程序显示 由于条件测试的顺序性 第一子句具有最高赋值优先级 第二子句其次 第三句最后 也就是说 如果当p1和p2同时为1时 z获得的赋值是a 选择信号赋值语句格式如下 WITH选择表达式SELECT赋值目标信号 表达式WHEN选择值 表达式WHEN选择值 表达式WHEN选择值 5 1并行信号赋值语句 5 1 3 选择信号赋值语句 选择信号赋值语句本身不能在进程中应用 功能与进程中的CASE语句的功能相似 CASE语句的执行依赖于进程中敏感信号的改变而启动进程 而且要求CASE语句中各子句的条件不能有重叠 必须包容所有的条件 选择信号语句中的敏感量为关键词WITH旁的选择表达式 当选择表达式的值发生变化时 就将启动此语句对于各子句的选择值进行测试对比 当发现有满足条件的子句的选择值时 就将此子句表达式中的值赋给赋值目标信号 与CASE语句相似 选择赋值语句对于子句条件选择值的测试具有同期性 而条件信号赋值语句是按照子句的书写顺序从上至下逐条测试的 选择赋值语句不允许有条件重叠的现象 也不允许存在条件涵盖不全情况 式中信号赋值目标的数据对象必须是信号 它的数据类型必须与赋值符号右边表达式的数据类型一致 5 1并行信号赋值语句 5 1 3 选择信号赋值语句 例 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL USEIEEE STD LOGIC UNSIGNED ALL ENTITYDECODERISPORT A B C INSTD LOGIC DATA1 DATA2 INSTD LOGIC DATAOUT OUTSTD LOGIC ENDDECODER ARCHITECTUREARTOFDECODERISBEGINSIGNALINSTRUCTION STD LOGIC VECTOR 2DOWNTO0 INSTRUCTION C B A WITHINSTRUCTIONSELECTDATAOUT DATA1ANDDATA2WHEN 000 DATA1ORDATA2WHEN 001 DATA1NANDDATA2WHEN 010 DATA1NORDATA2WHEN 011 DATA1XORDATA2WHEN 100 DATA1NXORDATA2WHEN 101 Z WHENOTHERS 当不满足条件时 输出呈高阻态ENDARCHITECTUREART 简化的指令译码器 对应于由A B C三个位构成的不同指令码 由DATA1和DATA2输入的两个值将进行不同的逻辑操作 结果从DATAOUT输出 5 1并行信号赋值语句 5 1 4块语句 块 BLOCK 语句是一种将结构体中的并行描述语句进行组合的方法 它的主要目的是改善并行语句及其结构的可读性 块的类属说明部分和接口说明部分的适用范围仅限于当前BLOCK 所有这些在BLOCK内部的说明对于这个块的外部来说是完全不透明的 即不能适用于外部环境 但对于嵌套于内层的块却是透明的 块的说明部分可以定义的项目主要有 USE语句 子程序 数据类型 子类型 常数 信号 元件 块中的并行语句部分可包含结构体中的任何并行语句结构 BLOCK语句本身属并行语句 BLOCK语句中所包含的语句也是并行语句 BLOCK语句的表达格式如下 块标号 BLOCK 块保护表达式 接口说明 类属说明 BEGIN并行语句 ENDBLOCK 块标号 接口说明部分类似于实体的定义部分 它可包含由关键词PORT GENERIC PORTMAP和GENERICMAP引导的接口说明等语句 对BLOCK的接口设置以及与外界信号的连接状况加以说明 1 块语句定义 5 1并行信号赋值语句 5 1 4块语句 利用BLOCK语句可以将结构体中的并行语句划分成多个并列方式的BLOCK 每一个BLOCK都像一个独立的设计实体 具有自己的类属参数说明和界面端口 以及与外部环境的衔接描述 具有块嵌套方式的BLOCK语句结构 例 ENTITYGATISGENERIC L TIME TIME S TIME TIME 类属说明PORT B1 B2 B3 INOUTBIT 结构体全局端口定义ENDENTITYGAT ARCHITECTUREARTOFGATISSIGNALA1 BIT 结构体全局信号A1定义BEGINBLK1 BLOCK 块定义 块标号名是BLK1GENERIC GB1 GB2 TIME 定义块中的局部类属参量GENERICMAP GB1 L TIME GB2 S TIME 局部端口参量设定PORT PB1 INBIT PB2 INOUTBIT 块结构中局部端口定义POTRMAP PB1 B1 PB2 A1 块结构端口连接说明CONSTANTDELAY TIME 1MS 局部常数定义SIGNALS1 BIT 局部信号定义BEGINS1 PB1AFTERDELAY PB2 S1AFTERGB1 B1AFTERGB2 GB1 GB2为时间量ENDBLOCKBLK1 ENDARCHITECTUREART 2 BLOCK的应用 5 1并行信号赋值语句 5 1 4块语句 BLOCK语句的应用 包括其中的类属说明和端口定义 都不会影响对原结构体的逻辑功能的仿真结果 3 BLOCK语句在综合中的地位 例 OUT1 1 AFTER2NS BLK1 BLOCKBEGINA2 OUT2 1 AFTER3NS A3 OUT3 0 AFTER2NS ENDBLOCKBLK1 例 A1 OUT1 1 AFTER2NS A2 OUT2 1 AFTER3NS A3 OUT3 0 AFTER2NS 两例的仿真结果是完全相同的 基于实用的观点 结构体中功能语句的划分最好使用元件例化 COMPONENTINSTANTIATION 的方式来完成 块语句的并行工作方式更为明显 块语句本身是并行语句结构 而且它的内部也都是由并行语句构成的 包括进程 需特别注意的是 块中定义的所有的数据类型 数据对象 信号 变量 常量 和子程序等都是局部的 对于多层嵌套的块结构 这些局部定义量只适用于当前块 以及嵌套于本层块的所有层次的内部块 而对此块的外部来说是不可见的 5 1并行信号赋值语句 块 BLOCK 语句是一种将结构体中的并行描述语句进行组合的方法 它的主要目的是改善并行语句及其结构的可读性 5 1 4块语句 3 BLOCK语句在综合中的地位 例 B1 BLOCK 定义块B1SIGNALS BIT 在B1块中定义SBEGINS AANDB 向B1中的S赋值B2 BLOCK 定义块B2 套于B1块中SIGNALS BIT 定义B2块中的信号SBEGINS CANDD 向B2中的S赋值B3 BLOCKBEGINZ S 此S来自B2块ENDBLOCKB3 ENDBLOCKB2 Y S 此S来自B1块ENDBLOCKB1 此例是对嵌套块的语法现象作一些说明 它实际描述的是如图所示的两个相互独立的2输入与门 两个2输入与门 5 1并行信号赋值语句 5 1 5元件例化语句 元件例化就是将预先设计好的设计实体定义为一个元件 然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接 元件例化语句由两部分组成 前一部分是将一个现成的设计实体定义为一个元件的语句 第二部分则是此元件与当前设计实体中的连接说明 BLOCK语句的表达格式如下 COMPONENT例化元件名ISGENERIC 类属表 PORT 例化元件端口名表 ENDCOMPONENT例化元件名 元件例化语句元件例化名 例化元件名PORTMAP 例化元件端口名 连接实体端口名 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYORD41ISPORT A1 B1 C1 D1 INSTD LOGIC Z1 OUTSTD LOGIC ENDORD41 ARCHITECTUREARTORD41OFORD41ISCOMPONENTND2ISPORT A B INSTD LOGIC C OUTSTD LOGICENDCOMPONENTND2 SIGNALS1 S2 STD LOGIC BEGINU1 ND2PORTMAP A1 B1 S1 位置关联方式U2 ND2PORTMAP A C1 C S2 B D1 名字关联方式U3 ND2PORTMAP S1 S2 C Z1 混合关联方式ENDARCHITECTUREARTORD41 5 1并行信号赋值语句 5 1 5元件例化语句 元件例化语句中所定义的例化元件的端口名与当前系统的连接实体端口名的接口表达有两种方式 一种是名字关联方式 在这种关联方式下 例化元件的端口名和关联 连接 符号 两者都是必须存在的 这时 例化元件端口名与连接实体端口名的对应式在PORTMAP句中的位置可以是任意的 另一种是位置关联方式 若使用这种方式 例化元件端口名和关联连接符号都可省去 在PORTMAP子句中 只要列出当前系统中的连接实体端口名就行了 但要求连接实体端口名的排列方式与所需例化的元件端口定义中的端口名一一对应 2输入与非门的设计 利用元件例化产生由3个相同的与非门连接而成的电路 例 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYND2ISPORT A B INSTD LOGIC C OUTSTD LOGIC ENDND2 ARCHITECTUREARTND2OFND2ISBEGINY ANANDB ENDARCHITECTUREARTND2 5 1并行信号赋值语句 5 1 6全加器设计与例化语句应用 显然 元件例化就是引入一种连接关系 将预先设计好的实体定义为一个元件 然后利用特定的语句将此元件与当前的设计实体中的指定端口相连 从而为当前设计实体引进一个新的低一级的设计层次 5 1并行信号赋值语句 5 1 6全加器设计与例化语句应用 显然 当前设计实体相当于一个较大的电路系统 所定义的例化元件相当于一个要插在这个电路板系统上的芯片 而当前设计实体中指定的端口则相当于这块电路板上准备接受此芯片的一个插座 元件例化是使VHDL设计实体构成自上而下层次化的一种重要途径 注意 端口信号的数据类型的定义必须与原设计实体文件一致 而且信号的排列方式也要与原来的一致 包括端口模式 数据类型 功能定义等 名字关联方式 位置关联方式 注意 这里参与设计的半加器文件 或门文件和全加器顶层设计文件都分别存于同一文件夹中 5 1并行信号赋值语句 5 1 7生成语句 这两种语句格式都是由如下四部分组成 1 生成方式 由FOR语句结构或IF语句结构 用于规定并行语句的复制方式 2 说明部分 对元件数据类型 子程序和数据对象作一些局部说明 3 并行语句 生成语句结构中的并行语句是用来 COPY 的基本单元 包括元件 进程语句 块语句 并行过程调用语句 并行信号赋值语句甚至生成语句 4 标号 生成语句中的标号并不是必须的 但如果在嵌套生成语句结构中就很重要 生成语句 GENERATE 是一种可以建立重复结构或者是在多个模块的表示形式之间进行选择的语句 由于生成语句可以用来产生多个相同的结构 因此使用生成语句就可以避免多段相同结构的VHDL程序的重复书写 相当于 复制 只要根据某些条件 设定好某一元件或设计单位 就可以利用生成语句复制一组完全相同的并行元件或设计单元电路结构 5 1并行信号赋值语句 5 1 7生成语句 利用了数组性语句作为生成语句的取值范围 进行重复元件例化过程 从而产生一组并列的电路结构 5 1并行信号赋值语句 5 1 7生成语句 待调用的D触发器 5 1并行信号赋值语句 5 1 7生成语句 n位 n 6 二进制计数器 电路中间部分的结构是规则的 但在两端是不规则的 而由n个D触发器构成的n位二进制计数器的位数是一个待定值 对此 利用FOR GENERATE语句或IF GENERATE语句来描述最为方便 5 1并行信号赋值语句 5 1 8GENERIC参数传递映射语句及其使用方法 5 1并行信号赋值语句 5 1 8GENERIC参数传递映射语句及其使用方法 注意 使用此句的条件是 所例化的模块必须有GENERIC语句定义的参量端口描述 例化元件 5 1并行信号赋值语句 5 1 9数据类型定义语句 1 限定性数组型数据类型定义 例 TYPESTBISARRAY 7DOWNTO0 OFSTD LOGIC 这个数组类型的名称是STB 它有8个元素 它的下标排序是7 6 5 4 3 2 1 0 各元素的排序是STB 7 STB 6 STB 1 STB 0 其中 数组名 是新定义的限定性数组类型的名称 可以是任何标志符 由设计者自定 此名将作为定义的新数据类型之用 而使用方法则与曾经提到的预定义数据类型的用法一样 数据类型与数组元素的数据类型相同 数组范围 明确指出数组元素的定义数量 和排列方式 以整数来表示其数组的下标 5 1并行信号赋值语句 5 1 9数据类型定义语句 2 非限定性数组型数据类型定义 例 VARABLEVA BIT VECTOR 1TO6 将数组取值范围定在1 6 不说明所定义的数组下标的取值范围 而是定义某一数据对象为此数组类型时 再确定该数组下标取值范围 这样就可以通过不同的定义取值 使相同的数据对象具有不同下标取值的数值类型 这就是非限定数组类型 其中 数组名 是新定义的非限定性数组类型的名称 数组下标名 是以整数类型设定的一个数组下标名称 其中符号 是下标范围待定符号 用到该数组时 再自动填入具体的数值范围 数据类型 是数组中每一元素的数据类型 5 1并行信号赋值语句 5 1 9数据类型定义语句 3 枚举型数据类型定义 其中的数据类型名就是用户用标识符命名的枚举数据类型名 其用法同预定义数据类型相同 而数据类型定义表述 就是具体列出所定义的类型的表述方法与形式 对于此枚举类型 在综合过程中 都将转换成二进制代码 5 1并行信号赋值语句 5 1 9数据类型定义语句 4 枚举型子类型数据类型定义 子类型的定义只在基本数据类型上作一些约束 并没有定义新的数据类型 这是与TYPE最大的不同之处 子类型定义中的基本数据类型必须是已有过TYPE定义的类型 包括已在VHDL预定义程序包中用TYPE定义过的类型 5 1并行信号赋值语句 5 1 10VHDL的存储器描述 利用时钟的双边沿控制数据读写的VHDL存储器描述程序 注意 此程序在同一进程中 在时钟的上升沿将数据写入存储器 而在同一时钟的下降沿将数据从存储器中读出 此程序之所以可以综合 是因为在进程中程序并没有用时钟的两个边沿对同一信号进行赋值操作 显然 在时钟的上升沿程序是对信号MEM赋值 而在下降沿是对Q赋值 二维数据类型 5 1并行信号赋值语句 5 1 10VHDL的存储器描述 结构体部分的两条语句是数据类型定义语句 第一句定义了一个二维的数据类型G ARRAY 其元素是128 8 第二条语句定义了信号MEM 规定此信号的数据类型是G ARRAY 于是信号MEN有128个单元 MEM 0 MEN 1 MEN 127 每一个单元有8个基本元素 如MEM 0 b7 b6 b0 其中每一个单元如MEM 0 bi 的数据类型都是标准逻辑位std logic 于是 MEM的取值范围是128 8 1024 个单元 这实际上是一个存储器 其存储深度是128 对应地址口线宽度是7 每一单元的数据宽度是8 对应存储器的数据口线宽度是8 5 1并行信号赋值语句 5 1 11信号属性及属性函数 综合器支持的属性有 LEFT RIGHT HIGH LOW RANGE REVERSRANGE LENGTH EEVENT及STABLE 属性是指关于设计实体 结构体 类型 信号等项目的指定特性 属性提供了描述特定对象的多个侧面值的手段信号属性在检测信号变化和建立详细的时域模型时非常重要为什么要有属性 电路元件需要时钟信号同步需要控制信号控制整个电路的行为 进程的执行 时钟信号与控制信号的使用多种多样利用属性可以使VHDL源代码更加简明扼要 便于理解 5 1并行信号赋值语句 5 1 11信号属性及属性函数 1 信号类属性 主要用来得到信号的各种行为功能信息 包括信号值的变化 信号变化后经过的时间 变化前的信号值等 共有5种属性 1 EVENT 当前很短的时间内信号发生了变化 则返回TRUE 否则返回FALSE 2 ACTIVE 当前信号等于1 则返回TRUE 否则返回FALSE 3 LAST EVENT 返回信号从前一个事件发生到现在的时间值 4 LAST VALUE 返回信号在最近一个事件发生以前的值 5 LAST ACTIVE 返回信号从上一次等于1到现在的时间值 5 1并行信号赋值语句 5 1 11信号属性及属性函数 2 数据区间类属性 该属性按指定输入参数可以得到一个确定的数组区间范围 只能用于数组 只有2种 1 RANGE其中n是输入参数 该属性可以得到一个的自然数区间2 REVERSE RANGE该属性 5 1并行信号赋值语句 5 1 11信号属性及属性函数 3 数值类属性 ele1 ele2 ele3 ele4获得的赋值分别为15 0 15和0 常用数据类型的数值类属性 LEFT 返回一个数据类型或子类型最左边的值 RIGHT 返回一个数据类型或子类型最右边的值 HIGH 返回一个数据类型或子类型的最大值 LOW 返回一个数据类型或子类型的最小值 属性规则 上下限 对数值取最大 最小值 对枚举类型数据下限取左边界值 上限取右边界值 对数组取数组区间的最大最小值 左右边界 按书写顺序取左边或右边值 5 1并行信号赋值语句 5 1 11信号属性及属性函数 3 数值类属性 奇偶校验判别信号发生器 5 1并行信号赋值语句 5 1 11信号属性及属性函数 4 数组类属性 LENGTH 5 用户定义属性 5 2VHDL运算操作符 逻辑操作符 LogicalOperator 关系操作符 RelationalOperator 算术操作符 ArithmeticOperator 省略赋值操作符 Omitassignmentoperator 与其他程序设计语言相似 VHDL中的表达式也是由运算符将基本元素连接起来形成 在VHDL语言中共有4大类操作符 5 2VHDL运算操作符 5 2 1逻辑操作符 在VHDL语言中 共有6种逻辑运算符 他们分别是 NOT取反 AND与 OR或 NAND与非 NOR或非 XOR异或 这6种逻辑运算符可以对 BIT 和 STD LOGIC 等逻辑型数据 STD LOGIC VECTOR 逻辑型数组及布尔数据进行逻辑运算 必须注意 运算符的左边和右边 以及代入的信号的数据类型必须是相同的 5 2VHDL运算操作符 5 2 1逻辑操作符 5 2VHDL运算操作符 5 2 1逻辑操作符 例5 12 SIGNALa b c STD LOGIC VECTOR 3DOWNTO0 SIGNALd e f g STD LOGIC VECTOR 1DOWNTO0 SIGNALh i j k STD LOGIC SIGNALl m n o p BOOLEAN a bANDc b c相与后向a赋值 a b c的数据类型同属4位长的位矢量d eORfORg 两个操作符OR相同 不需括号h iNANDj NANDk NAND不属上述三种算符中的一种 必须加括号l mXORn AND oXORp 操作符不同 必须加括号h iANDjANDk 两个操作符都是AND 不必加括号h iANDjORk 两个操作符不同 未加括号 表达错误a bANDe 操作数b与e的位矢长度不一致 表达错误h iORl i的数据类型是位STD LOGIC 而l的数据类型是 布尔量BOOLEAN 因而不能相互作用 表达错误 5 2VHDL运算操作符 5 2 2关系操作符 关系操作符的作用是将相同数据类型的数据对象进行数值比较或关系排序判断 并将结果一布尔类型的数据表现出来 即TURE或FALSE两种 例1 ENTITYrelational ops 1ISPORT a b INBIT VECTOR 0TO3 output OUTBOOLEAN ENDrelational ops 1 ARCHITECTUREexampleOFrelational ops 1ISBEGINoutput a b ENDexample 例2 ENTITYrelational ops 2ISPORT a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业管理安全值班制度及执行规范
- 教师工作调动申请规范范文
- 小学语文阅读教学心得与反思
- 食品安全实习报告规范范文
- 应届毕业生简历模板与面试技巧
- 公路桥梁养护管理标准操作规程
- 医院药品采购及存储管理制度
- 智能物流配送系统设计及应用分析
- 新就业形态人员社保权益保障
- 民事诉讼代理委托书范本模版
- 年度资金预算表参考模板
- 审计模拟实训教程第4版马春静课后部分参考答案
- 中国建筑史-绘图题
- GB/T 9442-2010铸造用硅砂
- 溶胶-凝胶法:高均一性、高比表面积催化剂制备
- FZ/T 73009-2021山羊绒针织品
- 纤维化学与物理-第三章蛋白质纤维-蚕丝课件
- 医务处的管理职责课件
- 中医妇科学课件-妊娠病胎漏胎动不安
- 甾体及其苷类-2011课件
- 大健康数据课件
评论
0/150
提交评论