EDA技术及应用 课件 第2单元 Verilog HDL 结构与要素_第1页
EDA技术及应用 课件 第2单元 Verilog HDL 结构与要素_第2页
EDA技术及应用 课件 第2单元 Verilog HDL 结构与要素_第3页
EDA技术及应用 课件 第2单元 Verilog HDL 结构与要素_第4页
EDA技术及应用 课件 第2单元 Verilog HDL 结构与要素_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA技术及应用高等职业教育本科精品教材PART01单元1EDA概述PART02单元2VerilogHDL结构与要素PART03单元3VerilogHDL描述语句PART05单元5常用模块电路的VerilogHDL设计PART06单元6基础设计PART07单元7IP核的应用目录CONTENTSPART04单元4QuartusPrime设计基础PART08单元8综合设计PART02单元2VerilogHDL结构与要素2.1

VerilogHDL设计实例2.2

VerilogHDL程序结构2.3

Verilog的数据类型2.4

VerilogHDL的运算符2.5

VerilogHDL文字规则2.1VerilogHDL设计实例2.1VerilogHDL设计实例在具体介绍Verilog的结构要素以及编程设计方法之前,通过一个具有代表性的设计实例来呈现Verilog的概貌。【例2.1】设计一个2选1数据选择器,其结构图如图21所示。2.1VerilogHDL设计实例2.1VerilogHDL设计实例我们可以通过2选1数据选择器的Verilog代码看到其基本结构和实现逻辑。首先,定义一个名为mux21a的模块,该模块有4个端口,分别是输入端口a、b、s以及输出端口y。输入端口a和b可以接收外部传入的数据,s端口则作为选择控制信号,用来决定最终输出y的值是取自a还是b。通过always块来实现根据s的值进行选择的逻辑,当s为真(在Verilog中通常可以理解为逻辑值为1)时,将b的值赋给y;当s为假(逻辑值为0)时,将a的值赋给y,实现2选1数据选择功能。2.2VerilogHDL程序结构2.2VerilogHDL程序结构VerilogHDL程序由模块构成,每个模块是一个独立的功能单元,模块的内容均嵌在module和endmodule这两个关键字之间,每个模块实现特定的功能。模块之间可以进行多层次嵌套,可以通过不同模块的合理组合与嵌套,构建复杂且功能强大的数字系统。VerilogHDL程序模块包括模块名、输入/输出端口描述、内部信号声明、逻辑功能定义等部分。程序模板如下:2.2VerilogHDL程序结构2.2VerilogHDL程序结构2.2.1端口声明在VerilogHDL中,端口声明是模块与外部环境进行数据交互的重要方式,VerilogHDL支持3种基本的端口类型,输入端口input、输出端口output和双向端口inout。input用于声明输入端口,外部信号可以通过这些端口将数据传递到模块内部。在实际应用中,输入端口通常用于接收如时钟信号、控制信号、数据信号等多种类型的信号。例如,在一个简单的计数器模块里,时钟信号clk和复位信号reset即由输入端口引入。计数器模块需要通过读取时钟信号的变化来精准地控制计数的节奏,确定何时开始计数、何时停止计数,以及何时对计数值进行清零等操作;复位信号则能让计数器在特定条件下恢复初始状态。输入端口的值完全是由外部进行驱动的,模块内部只能对其进行读取操作,而无法直接对这个端口进行赋值,确保了数据流向的单向性和模块的独立性。output用于声明输出端口,模块内部的信号可以通过这些端口将数据传递到外部。输出端口通常用于输出计算结果、状态信号等。在模块内部,需要对输出端口进行赋值操作,以提供有效的输出数据。还是以计数器模块为例,计数器模块在经过一系列计数运算后,最终得到的计数值就可以通过输出端口传递到外部,供其他相关模块调用,其他模块可根据这个计数值做进一步处理或判断,从而实现整个数字系统不同功能模块之间的协同工作。2.2VerilogHDL程序结构二是在模块内部针对每个端口的类型以及位宽进行声明。虽然这种方式比较烦琐,但是对于初学者或者想要深入理解端口声明过程的开发者来说,可以更清晰地看到每个端口是如何从名称定义到类型和位宽确定的完整过程。随着Verilog语言的不断发展和优化,现在端口声明方式更加简洁和直观,允许在模块定义的端口列表中直接声明端口的类型和位宽。示例代码如下:2.2VerilogHDL程序结构这样的声明方式减少了代码的行数,让代码看起来更加清晰明了,同时也提高了代码编写的效率。位宽声明用于指定端口可以传输的数据位数。在Verilog中,位宽声明使用方括号[],其格式为[msb:lsb],msb表示最高有效位,lsb表示最低有效位。如果没有声明位宽,则按照默认规则,该端口的位宽为1位。以下是带有位宽声明的示例代码:2.2VerilogHDL程序结构在声明位宽时,必须注意最高有效位和最低有效位的顺序,确保其与实际的数据传输需求一致。例如,一个32位的地址信号address,[31:0]表示数据从最高位31按顺序依次到最低位0进行传输。任何位宽顺序的错误都可能导致数据传输出现错误,进而影响整个数字电路的正常运行。2.2.2内部信号声明在VerilogHDL中,内部信号声明用于在模块内部定义用于连接不同逻辑单元或存储中间结果的信号。常见信号类型包括wire类型、reg类型、integer类型、real类型,详见2.3节。2.2.3逻辑功能定义Verilog能够通过不同的逻辑功能定义方式,如连续赋值语句、过程块等,对各种复杂的数字电路功能进行精确描述。例如,使用连续赋值语句assign可以方便地实现组合逻辑,如与门、或门、加法器等基本逻辑电路。对于时序逻辑,如触发器、计数器、状态机等,则可以利用always块结合时钟信号来描述其行为。2.2VerilogHDL程序结构2.2.4注释在Verilog中,注释是指对代码进行解释和说明的文本内容,它不会被编译工具处理,主要作用是增强代码的可读性和可维护性,方便开发者之间进行交流以及后续环节对代码的理解和修改。Verilog支持两种类型的注释:单行注释和多行注释。1.单行注释单行注释以双斜杠//开头,从//开始到该行结束的所有内容都会被视为注释。这种注释方式非常适合对代码中的某一行或者某一个语句进行简短的说明和解释。代码使用单行注释对模块声明、端口定义部分进行了说明,使得代码的功能更加清晰。2.2VerilogHDL程序结构2.多行注释多行注释以/∗开头,以∗/结尾,在/∗和∗/之间的所有内容都会被视为注释,无论是否跨行。这种注释方式适合对较长的代码块或者比较复杂的逻辑进行解释说明。代码使用多行注释对整个模块进行了详细阐述,包括模块的名称、主要实现的功能等关键信息。对于逻辑较为复杂、代码行数较多的模块,多行注释能够帮助阅读者更好地把握模块的整体情况,从而更好地理解和分析代码的实现逻辑以及后续的改进方向。2.3Verilog的数据类型2.3Verilog的数据类型VerilogHDL提供了丰富多样的数据类型,包括常量类型和变量类型。其中,常量包含整数型常量、实数型常量、字符型常量、参数常量;变量包含net型变量和variable型变量。net型变量通常表示电路元件之间的物理连接,如逻辑门之间的连接。Verilog提供了多种net型变量,如wire、tri等。variable型变量包括寄存器类型等。不同的数据类型具备各自的特性和用途,能够模拟数字电路中不同的信号和存储单元。从功能描述角度来看,线网类型可用于表示电路中的连线,能精确反映信号在组合逻辑中的传输情况;寄存器类型用于模拟触发器等存储元件,能精准描述时序逻辑中数据的存储和更新过程。在代码编写方面,使用合适的数据类型能让代码更具可读性,开发者可以更轻松地理解代码的意图。例如,使用参数类型定义常量,在代码中使用常量名替代具体数值,那么修改数值时,只需修改参数定义即可,无须在整个代码中进行查找和替换操作,大大提高了代码的可维护性。Verilog支持从行为级到结构级的多层次设计,不同的数据类型适用于不同的抽象层次。在行为级设计中,整数、实数等数据类型可用于进行算法描述,重点关注电路的功能实现;而在结构级设计中,线网和寄存器类型则更适合描述具体的电路连接和存储元件,侧重于电路的物理结构。在仿真过程中,不同的数据类型能模拟电路中不同的信号状态和数据变化。例如,使用time类型记录仿真时间,方便进行时序分析;使用integer类型进行循环计数,生成不同的测试激励,从而全面验证电路的功能和性能。2.3Verilog的数据类型2.3.1常量类型1.值集VerilogHDL的值集中包含4个基本的值。0:逻辑0或“假”状态。1:逻辑1或“真”状态。x(X):未知状态,对大小写不敏感。z(Z):高阻状态,对大小写不敏感。2.整数型常量在VerilogHDL中,整数有4种进制表示形式:二进制整数(b或B);十进制整数(d或D);八进制整数(o或O);十六进制整数(h或H)。完整的数字表达式为:<位宽>'<进制><数字>其中,位宽表示二进制数的位数,进制和数字共同表示常量值。8'b11001001//表示位宽为8的二进制数110010018'h8f//表示位宽为8的十六进制数8f位宽和进制缺省时表示十进制数,例如,128。8'b1100xxxx//表示位宽为8的二进制数,低4位为不定值4'b101z//表示位宽为4的二进制数,最低位为高阻,可表示为4'b101?较长的数之间可用下划线分开,如16'b1100_0000_1101_0101。当常量不说明位数时,默认值为32位。2.3Verilog的数据类型3.实数型常量实数型常量有两种表示形式:十进制计数法和科学计数法,具体形式如下:(1)十进制计数法。例如,2.0,12.369,0.351。注意:小数点两侧至少要有1位数字。(2)科学计数法。例如,37.2e3,其值为37200.0;23_5.1e2,其值为23510.0;4.592e2,其值为459.2;7e-3,其值为0.007。4.字符型常量字符型常量是用双引号括起来的一个或一串字符序列。字符型常量参与逻辑运算时,其中的每个字符采用其对应的8bitASCII码参与运算,因此一个字符型常量的实际位宽为其包含的字符数乘以8。例如,字符串常量ab等价于16'h6162。2.3Verilog的数据类型5.parameter常量在VerilogHDL中,用parameter定义一个标识符来代表一个常量,称为符号常量。语法格式如下:例如:parameterpar1=1,par2=4'b1001;此句定义了参数名为par1的十进制常数1,参数名为par2的二进制常数1001。2.3Verilog的数据类型2.3.2

net型变量在VerilogHDL中,net型变量用于表示结构实体(如门、模块)之间的物理连接,其值由驱动它的元件决定。若没有驱动元件连接到线网,net型变量的默认值为高阻态z。1.wire类型wire是最常用的net型变量,类似实际电路中的导线,用于连接不同的逻辑元件,实现组合逻辑中的信号传输。wire类型的信号不能存储数据,其值会随着驱动它的信号变化而立即更新。语法格式如下:2.3Verilog的数据类型例如,在一个与门电路中,可以使用wire类型来连接输入和输出。示例代码如下:在这个例子中,a、b和y都是wire类型的信号,通过assign语句实现了与门的逻辑功能。2.3Verilog的数据类型2.tri类型tri类型和wire类型相似,但它常用于多驱动源的三态总线。在数字电路中,当多个设备需要共享一条总线时,每个设备可以通过一个三态缓冲器连接到总线上,通过控制三态缓冲器的使能信号,实现多个设备对总线的分时复用。以下是一个三态总线示例。该示例中,bus是tri类型的信号,根据enable1和enable2的状态,决定是将in1还是in2的数据驱动到总线上,或者使总线处于高阻态。2.3Verilog的数据类型3.其他线网类型除了上述常见的线网类型外,Verilog还提供了其他线网类型,如triand(等同于wand)、trior(等同于wor)、tri0(弱上拉)、tri1(弱下拉)等,它们在不同的电路设计场景中有着特定的应用。triand(wand):当多个驱动源连接到triand线网时,只有所有驱动源都为高电平,线网才为高电平,否则为低电平。常用于实现与逻辑的多驱动情况。trior(wor):当多个驱动源连接到trior线网时,只要有一个驱动源为高电平,线网就为高电平,否则为低电平。常用于实现或逻辑的多驱动情况。tri0:这种类型的线网在没有驱动源时会被弱上拉到逻辑高电平。例如,在一些需要默认高电平的电路中可以使用。tri1:这种类型的线网在没有驱动源时会被弱下拉到逻辑低电平。例如,在一些需要默认低电平的电路中可以使用。2.3Verilog的数据类型2.3.3寄存器类型在VerilogHDL中,寄存器类型用于存储数据,其值在赋值后保持不变,直到下一次被重新赋值,常用于时序逻辑设计。下面详细介绍常见的寄存器类型。1.reg类型reg是最常用的寄存器类型,可用于模拟触发器、寄存器等存储元件。reg类型的变量需要在always块或initial块中赋值,赋值后一直保持不变,直到下一次被重新赋值;在连续赋值语句assign中不能使用reg类型变量。在硬件实现时,reg类型变量不一定对应实际的硬件寄存器,它也可以用于组合逻辑的建模。语法格式如下:2.3Verilog的数据类型例如:reg[3:0]counter;//声明一个4位的reg类型计数器常用于时序逻辑电路中存储计数器的值、状态机的状态等重要信息。例如,在一个状态机的实现代码中,不同的状态可以用reg类型的信号表示,随着时钟信号的节拍和相应的条件判断,状态在各个可能的值之间切换,从而实现状态机的逻辑功能。示例代码如下:2.3Verilog的数据类型2.integer类型integer是一种整数类型的信号,通常为32位有符号整数。在实际应用中,可以存储整数值,并且支持常规的算术运算和逻辑运算,可以在过程块中使用,也可以进行算术运算。例如:2.3Verilog的数据类型其中,a和b是4位的输入信号,c是integer类型的变量,用于存储a和b的和,最后将结果赋值给c。当需要利用循环对某个数组或者一组数据进行操作时,可以将integer类型的变量作为循环的计数器,控制循环的次数。示例代码如下:2.3Verilog的数据类型3.time类型time是一种无符号的64位寄存器类型,用于表示时间值。仿真时,它可以用来记录事件发生的时间,单位由仿真器的时间精度决定。可以在过程块中对time类型变量进行赋值和比较操作。2.3Verilog的数据类型4.real类型real类型的变量以双精度浮点数的形式存储数据,它能表示带有小数部分的数值,在需要精确计算的仿真中较为常用,通常不直接用于硬件实现。在模拟信号处理、算法验证、测试平台等场景中,当需要处理连续的数值或进行高精度计算时,real类型非常有用。例如,在模拟一个连续变化的电压值或者计算一个复杂的数学公式时,使用real类型可以更准确地模拟实际情况。声明real类型变量的语法格式如下:例如,realvoltage;//声明名为voltage的real类型变量。2.4VerilogHDL的运算符2.4VerilogHDL的运算符VerilogHDL运算符按功能可分为算术运算符、逻辑运算符、关系运算符、移位运算符、条件运算符、位拼接运算符等。不同功能的运算符在数字电路的不同应用场景中发挥着关键作用,从基本的数值计算到复杂的逻辑判断以及数据的组合与拆分等方面,共同构建了VerilogHDL的运算体系。按操作数的数量来分,运算符可分为单目运算符、双目运算符、三目运算符:单目运算符只带一个操作数,例如取反操作等;双目运算符带有两个操作数,例如加法、减法等运算;三目运算符带3个操作数,条件运算符是典型的三目运算符。在书写程序时,为了有效避免出错,同时提升程序的可读性,可以利用括号来控制运算的优先级,确保运算的顺序进行。2.4VerilogHDL的运算符2.4.1算术运算符算术运算符用于执行基本的算术运算,是数字电路中进行数值处理的基础工具。进行算术运算时,如果某一个操作数有不确定值x,则整个结果也为不确定值x,在数字电路中,不确定值参与运算无法得出准确的结果。reg型和net型变量综合将生成无符号数,在参与算术运算时,按照无符号数的规则进行处理;integer型变量综合生成有符号数,运算时会考虑符号位的影响,遵循有符号数的运算逻辑。算术运算符见表21。2.4VerilogHDL的运算符整数除法会截断小数部分,例如5/2的结果是2,在数字电路实现以及Verilog运算规则里,对于整数除法,只保留整数部分作为结果。取模运算的结果符号与第一个操作数相同,例如-5%2的结果是-1,这是根据取模运算对于有符号数的定义和处理规则来确定的,其结果的符号特性有助于在涉及周期性、余数判断等场景的数字电路设计中体现逻辑关系。2.4.2按位逻辑运算符按位逻辑运算符用于对操作数的相应位进行按位操作,在逻辑电路的行为级描述中有着广泛的应用。例如,在对存储单元中的数据进行特定的逻辑变换时,通过按位逻辑运算符可以实现将数据的每一位进行取反、按位与其他数据进行逻辑组合等操作;或者根据数据的某些位进行条件判断,如判断某几位是否全为1。在实现奇偶校验电路时,可以用按位异或运算对数据的所有位依次进行异或,最终结果用来判断数据的奇偶性。将所有位进行异或运算后,如果结果为1,则数据的1的个数为奇数,即数据为奇校验;如果结果为0,则1的个数为偶数,为偶校验。按位逻辑运算符见表22。2.4VerilogHDL的运算符2.4VerilogHDL的运算符2.4.3逻辑运算符逻辑运算符用于执行逻辑运算,操作数通常是布尔值或可以转换为布尔值的表达式;可通过逻辑判断决定不同条件下电路的行为走向,如控制信号的使能、状态的切换等都离不开逻辑运算符的运用。逻辑运算符见表23。2.4VerilogHDL的运算符2.4.4关系运算符关系运算符用于比较两个操作数的关系,其结果通常为布尔值。关系运算符均为双目运算符。关系运算符分为等式运算符和不等式运算符两大类,共8种。等式运算符见表24,不等式运算符见表25。2.4VerilogHDL的运算符当等式操作的结果为1时,表明关系为真;结果为0时,表示关系为假。用双等于操作符“==”做比较,两个二进制数将被逐位比较;如果两个数的位数不等,则自动将较少位数的数的高位补0对齐,再进行比较;当每一位都相等时,才输出结果1,否则为0。此外,如果其中有的位是未知值x或高阻值z,则都判定为假,输出0。与“==”不同,全等比较操作符“===”将x或z都当作确定的值进行比较,当表述完全相同时输出1。做全等比较时,两个比较数位数不等时,不进行高位补0,直接判断两个数不相等。2.4.5移位运算符移位运算符为实现高效的电路设计提供了便利手段。在乘法、除法运算的实现中,可以利用左移或右移操作来等效替代部分乘法或除法运算。对于无符号整数,将一个数左移一位相当于乘以2,右移一位相当于除以2,在一些简单的算术运算模块、数据处理单元中,常借此来简化电路结构。移位运算符也常用于数据的位操作、格式转换。例如,对一个字节数据进行位调整,或通过移位来提取或组合特定的数位等操作,在通信协议的处理、数据缓存管理等场景中较为常用。通过合理的移位操作,可以方便地按照特定规则对数据进行重新排列和处理,满足不同的功能需求。2.4VerilogHDL的运算符A>>n或A<<n,表示将操作数或变量A中的数据右移或左移n位。这里指的是二进制数移位。空位用0填补。例如,若A=8'b11001001,则A>>1的值是8'b01100100,A<<3的值是8'b01001000。Verilog-2001版本增加了对有符号数左移和右移的操作符,即“>>>”作为右移移位操作符,“<<<”作为左移移位操作符。A>>>n或A<<<n,表示将操作数或变量A中的有符号数右移或左移n位,且对于右移操作,一律用符号位即最高位填补移出的位,而左移操作同普通左移“<<”。移位运算符见表26。2.4VerilogHDL的运算符2.4.6并置运算符并置运算符用于将多个位或多个矢量连接起来,组合成一个新的矢量。并置运算符用“{}”表示。并置运算符见表27。2.4VerilogHDL的运算符2.4.7条件运算符条件运算符是三目运算符。根据条件表达式的值选择返回两个表达式中的一个,其语法格式和具体特点如下:2.4VerilogHDL的运算符运算时,首先对“条件表达式”进行求值判断。如果“条件表达式”的结果为真,条件运算符的运算结果取“表达式1”的值;相反,如果“条件表达式”的结果为假,条件运算符的运算结果取“表达式2”的值。条件运算符见表28。2.4VerilogHDL的运算符表达式max_num=(num1>num2)?num1:num2,先比较num1和num2的大小,如果num1大于num2,max_num取num1的值,否则max_num取num2的值。条件运算符可根据不同的条件给信号赋值,例如在状态机中根据当前状态和某些输入条件决定下一个状态的赋值。在多路选择器的行为级描述中,依据选择控制信号决定输出哪一路输入数据,起到选择开关的作用。使用条件运算符时应注意,条件表达式、表达式1和表达式2的数据类型应该在逻辑上相互兼容,以避免出现意外的综合结果或者语法错误。例如,如果给一个4位的矢量信号赋值,则表达式1和表达式2也应为4位宽度的数据类型或者能够转换为4位宽度的数据类型。2.5VerilogHDL文字规则2.5VerilogHDL文字规则VerilogHDL具有特定的文字规则,正确编写VerilogHDL代码对实现预期数字电路逻辑功能起到重要作用。深入了解并严格遵循这些规则,能够有效避免代码编写过程中的各种错误,保障电路设计的准确性和可靠性。2.5.1

VerilogHDL的逻辑状态VerilogHDL中存在4种逻辑状态:0、1、x、z。1.0(低电平、假的逻辑状态)在数字电路的实际物理层面,0对应低电压值。在TTL电平标准中,电压值接近0V代表逻辑0状态。在与运算时,只要参与运算的操作数中有一个为0,结果为0;在或运算时,只要有一个操作数为1,结果为1。比如01的结果为1。2.1(高电平、真的逻辑状态)在TTL电平标准中,通常电压值接近电源电压则认定为逻辑1状态。在与运算时,只有所有参与运算的操作数都为1,结果才为1;在或运算时,只要有一个操作数为1,结果就为1。在实际电路设计场景里,常用来表示信号有效、条件满足等情形,比如使能信号为1时,对应的模块可以正常工作,能够进行相应的数据处理、信号传输等操作,是激活电路模块功能的关键标识。2.5VerilogHDL文字规则3.x(不定态)x表示不定态,可能是0也可能是1,或者处于不稳定、未初始化的状态。在电路综合或者仿真过程中,如果出现某些变量没有被正确赋值、信号连接有问题等情况,可能产生不定态。例如,在对一个寄存器变量声明后,没有对其进行初始化而直接使用,其值可能为x。在逻辑运算中,只要参与运算的操作数中有x,结果也是不确定的,比如1&x的结果为x。4.z(高阻态)z表示高阻态,说明该信号处于高阻抗状态,信号与外部电路暂时断开连接,不输出有效电平值,既不是0也不是1。在实际数字电路中,三态门的输出在使能无效时呈现高阻态,这种特性具有重要的应用价值,它可以允许多个器件连接到同一条总线上,通过控制各个器件的三态门使能来分时复用总线,实现不同器件间数据的高效共享和交互,避免数据冲突等问题。在逻辑运算时,0&z结果为0,1&z结果为z,z与确定的高电平1进行“与”运算时,无法确定最终的有效电平,结果保持高阻态。2.5VerilogHDL文字规则2.5.2

Verilog的数字表达形式在Verilog中,表示一个二进制数的一般格式为:2.5VerilogHDL文字规则其中,位宽表示二进制数的位数,用十进制整数来指定;数值是由0和1组成的二进制数字序列。例如,“6'b101010”,“6”表示该二进制数的位宽是6位,“101010”是二进制数值内容。只有标明了数制的数据才能确定其二进制位数。如式S[3:0]=1的等号右侧的1等于二进制数0001,表述为4'b0001;式S[5:0]=7的7等于6'b000111;5'bz可表述为5'bzzzzz。如果将某标识符R定义为位矢,如“reg[7:0]R”,则赋值语句中R<=4的4的表述是8'b00000100。Verilog2001版本还可定义有符号二进制数,如8'b10111011和8'sb10111011是不同的,前者是普通无符号数,后者是有符号数,其最高位1是符号。sb是定义有符号二进制数的进制限定关键词。2.5VerilogHDL文字规则2.5.3标识符、关键词及其他文字规则1.标识符标识符用于给Verilog中的模块、端口、变量、函数、任务等对象命名,是构建清晰、可维护代码结构的重要元素。标识符可以由字母(区分大小写,包括a~z、A~Z)、数字0~9、下划线“_”以及美元符号“$”组成。标识符必须以字母或者下划线开头,例如my_module、_counter是合法的标识符,3data、$var属于非法标识符。标识符不能是Verilog的关键词,不能取名为module、if等。合法的标识符举例如下:Decoder_1,FFT,Sig_N,Not_Ack,State0,_Decoder_,REG非法的标识符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论