收藏 分销(赏)

EDA复习资料.doc

上传人:人****来 文档编号:3103553 上传时间:2024-06-18 格式:DOC 页数:11 大小:376.25KB 下载积分:8 金币
下载 相关 举报
EDA复习资料.doc_第1页
第1页 / 共11页
EDA复习资料.doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
填空题 1,、硬件描述语言(HDL)是EDA技术的重要组成部分,是电子系统硬件行为描述、结构描述、数据流描述的语言。它的种类很多,如VHDL、Verilog HDL、AHDL。 2、 CPLD是寄语乘积项的可编程结构,即由可编程的与阵列和固定的或阵列来完成功能。面FPGA采用查找表LUT结构的可编程结构。 3、 Verilog HDL的数字可以用二进制、十进制、八进制和十六进制4仲不同数制来表示。 4、 在Verilog HDL中还存在两种特殊的取值,高阻态(Z或者z)和不定态(X或者x)。 5、 Verilog HDL模块的I/O声明模块端口定义中各端口数据流动方向,包括输入(input)、输出(output)和双向(inout)。 6、FPGA由可编程逻辑块(CLB)、可编程互连单元(I/O)和可编程互连三种可编程电路和一个SRAM结构的配置存储单元组成。 7、摩尔状态机中,其输出只是当前状态值的函数,并且仅在时()()沿到来时才发生变化。 8、EDA数字系统工程设计流程包括:设计准备、设计输入、设计实现、器件编程与配置、设计验证。 9、对综合而言,Verilog HDL的wire型变量的取值可以是0、1、x和z。 10、如果Verilog HDL操作符的操作数只有1个,称为单目操作;如果操作符的操作数有2个,称为双目操作;如果操作符的操作数有3个,称为三目操作。 11、Quartus Ⅱ的编程系在设计文件包括引脚锁定和编程下载两个部分。 12、Verilog HDL中,register型变量有reg、integer、rea和time 4种。 13、Verilog HDL的模块短空定义用来声明电路设计模块的输入端口和输出端口。 14、Verilog HDL的功能描述是用来描述设计模块的内部结构和模块端口间的逻辑关系。 15、在Verilog HDL中,赋值语句有门基元、连续赋值、过程赋值和非阻塞赋值4种。 16、Verilog HDL的连续赋值语句的关键字是assign,赋值符号是 = 。 17、在Verilog HDL中,结构描述包括门级(Gate Level)和开关级(Switch Level)两种抽象级别。 18、Verilog HDL的always块语句中的语句是顺序语句,always块本身却是并行语句。 19、在Verilog HDL模块中,任务用来单独完成某项具体任务,并被模块或其他任务调用。 20、在Verilog HDL的语句中,系统对表达式的值进行判断,若值为0,则按假处理;若为1,则按真处理。 21、一个完整的Verilog HDL设计模块包括:端口定义、I/O声明、信号类型声明和功能描述4个部分。 22、Verilog模块可以非为两种类型:一种是未了让模块最终能生成电路的结构,另一种只是为了测试所设计电路的逻辑功能是否正确。 23、在Verilog HDL中,使用posedge关键字声明事件是由输入信号的上升沿触发的;使用negedge关键字声明事件是由输入信号的下降沿触发的。 简单题 1.元件例化语句的作用是什么? 答:元件例化语句作用:把已经设计好的设计实体称为一个元件成个模块,它可以被高层次的设计引用,是使Verilog HDL设计构成自上而下层次设计的重要途径。 2.Verilog HDL的操作符有哪几类? 答:Verilog HDL提供了丰富的运算操作符,其中包括逻辑操作符、算术操作符、关系操作符、等式操作符、条件操作符、位操作符、缩位操作符、移位操作符和拼接操作符等9类。 3.简述层次结构设计的优点。 答:层次化设计是一种模块化的设计方法,设计人员对设计的描述由上而下逐步展开,符合常规的思维习惯;由于顶层设计与具体的器件和工艺无关,因此易于在个种可编程逻辑器件中间进行移植。 层次化的设计方法可以使多个设计人员同时进行操作,有利于对设计任务进行合理的分配并用系统工程的方法对设计进行管理。 4.在数字系统设计中锁定引脚的作用是什么? 答:将设计文件中的输入、输出信号定位到所选期间的具体物理管脚。 5.简述自顶而下的设计指思想。 答:自顶而下的设计指的是将一个大规模的数字电路系统从功能上化为若干个不相交的子模块,每个子模块又可以根据需要在功能上化为若干个二级子模块,依此类推,直到功能模块小到比较容易实现为止。 6.简述使用always描述组合逻辑电路的规则 答:在描述组合逻辑电路时,always在使用上有以下几个特点(或者说是规则); 1)在敏感列表中使用电平敏感事件,不要使用边沿敏感。 2) 为变量赋值的使用阻塞赋值,不要使用非阻塞赋值。 另外,在always块内被赋值的变量必须为寄存器型变量。因此尽管在组合逻辑中不包含任何记忆单元,但是如果变量需要在always块内被赋值,就必须定义为寄存器型,这并不表示所描述的数字电路系统中包含有记忆元件。 7.系统任务$stop和$finish的区别是什么?  答:系统任务$stop和$finish的区别是,系统任务$stop用于暂停仿真,系统任务$finish用于结束仿真。  $stop使仿真进入一种交互模式,设计者可以在此模式下对设计进行调试。当设计者想要暂停仿真来检查信号的值时,可以使用这个系统函数。 系统任务$finish用于结束仿真。 8. Verilog HDL的基本单元——模块主要包括哪些内容?主要作用是什么? 答:模块(module)是Verilog HDL对数字电路系统建模的基本单元,每个模块包括模块名称、端口列表、端口类型列表、内部变量定义以及逻辑功能描述等几个部分。 模块名称:模块取一个和其功能相关的名字 端口列表:模块的输入和输出端口 端口类型列表:定义各个端口的方向如(输入端口、输出端口和双向端口) 内部变量定义:内部变量可以使程序变得更有条理 逻辑功能描述:是一个模块的主体,它描述了模块的输出信号和输入信号的逻辑关系。 9.使用timescale编译器指令的目的是什么?举出一个实例 答: timescale 1ns/100ps 此语句说明时延时间单位为1ns并且时间精度为100ps (时间精度是指所有的时延必须被限定在0.1ns内)。 如果此编译器指令所在的模块包含上面的连续赋值语句, #2 代表2ns。 10.UDP代表什么? 答:用户定义原语(UDP)。创建的灵活性:用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。 11.写出两个基本逻辑门的名称。 答:基本逻辑门,例如and、or和nand等都内置在语言中 12.VerilogHDL中的两类主要数据类型是什么? 答:Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。 13.阻塞性赋值和非阻塞性赋值有何区别? 答:阻塞赋值使用“=”为变量赋值,在赋值结束以前不可以进行其他操作,在赋值结束后继续后面的操作。这个过程就好像阻断了程序的运行,因而被成为阻塞赋值。连续的阻塞赋值操作是顺序完成的。 非阻塞赋值使用“<=”为变量赋值,在执行到赋值语句时,仅仅对“<=”右侧的表达式的值进行评估,但并不马上执行赋值,然后继续执行后面的操作。这个过程就好像没有阻断程序的运行,因而被成为非阻塞赋值。连续的非阻塞赋值操作是同时完成的。 多条阻塞赋值语句是顺序执行的,而多条非阻塞语句是并行执行的,这就是两者的区别。 14.VerilogHDL支持哪三种基本描述方式? 答:行为描述方式(过程化结构建模),数据流方式(连续赋值语句方式),结构化方式(使用门和模块实例语句描述建模)。 15.可以使用Verilog HDL描述一个设计的时序吗? 答:Verilog HDL可以清晰的建立时序模型,故可以使用Verilog HDL描述一个设计的时序。 16. 在数据流描述方式中使用什么语句描述一个设计? 答:设计的数据流行为使用连续赋值语句进行描述 17. 什么是硬件描述语言?它的主要作用是什么? 答:硬件描述语言HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和系统的语言。数字电路系统的设计者利用这种语言可以从上层到下层(从抽象到具体),逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。 18.目前常用的HDL硬件描述语言有几种,各有什么特点? 答:目前常用的HDL主要有:VHDL、Verilog HDL、System Verilog、System C;Verilog HDL成为某层电路建模与设计中最流行的硬件描述语言;VHDL是在高层次上描述系统和元件的行为建模工具;System Verilog主要定位于集成电路的实现和验证流程,并为系统级设计流程提供了强大的链接能力;System C主要用于ESL(电子系统级)建模与验证。 19.什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么? 答:在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。有以下几种类型: (1)从自然语言转换到VHDL语言算法表示,即自然语言综合。 (2)从算法表示转换到寄存器传输级(RegisterTransport Level,RTL),即从行为域到结构域的综合,即行为综合。 (3)从RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合。 (4)从逻辑门表示转换到版图表示(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。 综合在电子设计自动化中的地位是核心地位。综合器具有更复杂的工作环境,综合器在接受VHDL程序并准备对其综合前,必须获得与最终实现设计电路硬件特征相关的工艺库信息,以及获得优化综合的诸多约束条件信息;根据工艺库和约束条 件信息,将VHDL程序转化成电路实现的相关信息。 20.IP是什么?IP与EDA技术的关系是什么?  答:IP是知识产权核或知识产权模块,用于ASIC或FPGA/CPLD中的预先设计好的电路功能模块,在EDA技术开发中具有十分重要的地位。美国著名的Dataquest咨询公司将半导体产业的IP定义为:“用于ASIC或FPGA/CPLD中的预先设计好的电路功能模块”。 IP分为软IP、固IP、硬IP: 软IP:用VHDL等硬件描述语言描述的功能块,并不涉及用什么具体电路元件实现这些功能;软IP通常是以硬件描述语言HDL源文件的形式出现。 固IP:完成了综合的功能块,具有较大的设计深度,以网表文件的形式提交客户使用。硬IP:提供设计的最终阶段产品:掩模 21.wire型变量与reg型变量有什么本质区别,它们可用于什么类型语句中? 答:书上P261~262 线网(wire)表示硬件单元之间的连接,就像在真实的电路中一样,线网由其连接器件的输出端连续驱动。线网不能储存值,而且它必须受到驱动器(例如门或连续赋值语句,assign)的驱动。如果没有驱动源,则线网的值为z。 reg寄存器用来表示存储元件,它保持原有的数值,通过赋值语句可以改变寄存器储存的值,其作用与改变触发器储存的值相当。reg类型数据的默认初始值为不定值x。 定义为Net型的变量常被综合为硬件电路中的物理连接,其特点是输出的值紧跟输入值的变化而变化,因此常被用来表示以assign关键词引到的组合电路描述。 Register类型变量必须放在过程语句中,如initial、always引导的语句中,通过过程赋值语句(包括阻塞与非阻塞语句)完成赋值操作,换言之,在always、initial等过程结构内被赋值的变量必须定义为Variable类型。 22. 阻塞赋值和非阻塞赋值有何区别? 答:Verilog中,用普通等号“=”作为阻塞式赋值语句的赋值符号,如y=b。 Verilog中,用普通等号“<=”作为非阻塞式赋值语句的赋值符号,如y<=b。 阻塞式赋值的特点是,一旦执行完当前的赋值语句,赋值目标变量y即刻获得来自等号右侧表达式的计算值。如果在一个块语句中含有多条阻塞式赋值语句,则当执行到其中某条赋值语句时,其他语句将禁止执行,即如同被阻塞了一样。 非阻塞式赋值的特点是必须在块语句执行结束时才整体完成赋值操作。非阻塞的含义可以理解为在执行当前语句时,对于块中的其他语句的执行情况一律不加限制,不加阻塞。这也可以理解为,在begin_end块中的所有赋值语句都可以并行运行。 23. 简单叙述任务与函数的不同点。 答: 任务和函数有些不同,主要的不同有以下4点; (1)函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。 (2)函数不能启动任务,而任务能启动其他任务和函数。 (3)函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。 (4)函数返回一个值,而任务则不返回值。 选择题 1、 Verilog HDL是由( ② )语言演化过来的。 ①、BASIC ②、C语言 ③、PASCAL ④、VHDL 2、 Verilog HDL的设计模块可以被高层次的系统( ④),成为系统的一部分。 ①、输入 ②、输出 ③、仿真 ④、调用 3、 Verilog HDL的模块端口定义用来声明电路设计模块的(④)端口。 ①、输入 ②、输出 ③、双向 ④、全部输入/输出 4、 用Verilog HDL的assign语句建模的方法一般成为(①)方式。 ①、连续赋值 ②、并行赋值 ③、串行赋值 ④、函数赋值 5、 在Verilog HDL的转移操作运算中,用符号“<<”实现对操作数的(③)操作。 ①、逻辑右移 ②、算术右移 ③、逻辑左移 ④、算术左移 6、 在Verilog HDL模块中,tack语句类似高级语言中的(④)。 ①、函数 ②、常数 ③、变量 ④、子程序 7、 Verilog HDL的always块语句中的语句是(①)语句。 ①、顺序 ②、并行 ③、顺序或并行 ④、串行 8、 在Verilog HDL的缩减操作运算中,设A=8’b11010001,则“|A”运算的结果为(②)。 ①、0 ②、1 ③、x ④、z 9、 在下列符号组中,(②)不能作为Verilog HDL的标识符。 ①、CT74138 ②、74LS138 ③、_74138 ④、CT74138 10、 在Verilog HDL的常数中,八进制数符号是用(③)表示。 ①、d或D ②、b或B ③、o或O ④、h或H 11、 。。。。。。。。。调用时返回一个用于(④)的值。 ①、程序包 ②、输入 ③、输出 ④、表达式 12、 在Verilog HDL中,语句“always@(negedgeclk)”表示模块的事件是由clk的(①)触发的。 ①、下降沿 ②、上升沿 ③、高电平 ④、低电平 13、 在Verilog HDL中,连续赋值语句的“:”号两边的变量都应该是(①)型变量。 ①、wire ②、register ③、wire或register ④、integer 14、 在Verilog HDL的端口声明语句中,用(①)关键字声明端口为双向方向。 ①、inout ②、INOUT ③、BUFFER ④、buffer 15、 在Verilog HDL的常数中,二进制数符号是用(②)表示。 ①、d或D ②、b或B ③、o或O ④、h或H 16、 在Verilog HDL的逻辑运算中,设A=8’b00011001,则表达式“A&B”的结果为(①)。 ①、8’b00010001 ②、8’b11011001 ③、8’b11001000④、8’b00110111 17、 在Verilog HDL的关系运算中,如果关系是真,则计算结果为(②)。 ①、0 ②、1 ③、x ④、z 18、 在Verilog HDL的转移操作中,用符号“>>”实现对操作数的(①)。 ①、逻辑右移 ②、算术右移 ③、逻辑左移 ④、算术左移 19、 在Verilog HDL中,连续赋值语句的关键字是( ①)。 ①、assign ②、ASSIGN ③、Assign ④、以上均可 20、 在Verilog HDL中,语句“always@(posedge clk)”表示模块的事件是用clk的(②)触发的。 ①、下降沿 ②、上升沿 ③、高电平 ④、低电平 21、 答案貌似选2,IEEE#1064-1995. ①、 ②、IEEE#1064-1995 ③、IEEE.STD_LOGIC_1164 ④、IEEESTDI076-1993 22、 一个能为Verilog HDL综合器接受,并能作为一个独立设计单元的完整的Verilog HDL程序称为(③)。 ①、设计输入 ②、设计输出 ③、设计模块 ④、设计结构 23、 Verilog HDL 的设计模块可以被高层次的系统(④),成为系统的一部分。 ①、输入 ②、输出 ③、仿真 ④、调用 24、 Verilog HDL 的模块端口定义用来声明电路设计模块的(④)端口。 ①、输入 ②、输出 ③、双向 ④、全部输入/输出 25、 在Verilog HDL模块的I/O声明中,用来声明端口数据流动方向的关键字包括(④) ①、input ②、output ③、inout ④、以上均是 26、 在Verilog HDL的端口声明语句中,用(①)关键字声明端口为输入方向。注意:input是小写。 ①、input ②、INPUT ③、IN ④、output 27、 Verilog HDL的功能描述是用来描述设计模块的内部结构和模块端口间的逻辑关系,通常把确定这些设计模块描述的方法称为(③)。 ①、综合 ②、仿真 ③、建模 ④、设计 28、 用Verilog HDL的assign语句建模的方法一般称为(①)方式。 ①、连续赋值 ②、并行赋值 ③、串行赋值 ④、函数赋值 29、 用Verilog HDL的元件例化方式建模来完成的设计一般属于( ②)描述方式。 ①、行为 ②、结构 ③、功能 ④、行为和结构 30、 Verilog HDL程序的每个模块的内容都是在(③)两语句之间。 ①、start和endmodule ②、module和end ③、module和endmodule ④、start和endstart 31、 在Verilog HDL的常数中,未知数字是用(②)表示。注意:x为小写。 ①、X ②、x ③、Z ④、z 32、 Verilog HDL的标识符可以是字母、数字和下划线“_”等符号组成的任意序列,但首字母不能是(③)。 ①、大写字母 ②、小写字母 ③、数字 ④、下划线“_” 33、 在Verilog HDL的标识符中使用字母的规则是(②)。 ①、大小写相同 ②、大小写不同 ③、只允许用大写 ④、只允许用小写 34、 在Verilog HDL的逻辑运算中,设A=8’b||010001,B=8’b00011001,则表达式A|B结果为(②)。 ①、8’b00010001 ②、8’b11011001 ③、8’b11001000④、8’b00110111 35、 在Verilog HDL的逻辑运算中,设A=8’b||010001,B=8’b00011001,则表达式A^B结果为(③)。 ①、8’b00010001 ②、8’b11011001 ③、8’b11001000④、8’b00110111 36、 在Verilog HDL的设计模块中,最常用的寄存器型变量是(①)型变量。 ①、reg ②、nets ③、reg或nets ④、ineger 37、 在Verilog HDL中,连续赋值语句的“=”号两边的变量都应该是(①)型变量。 ①、wire ②、register ③、wire或register ④、integer 38、 Verilog HDL的always块语句中的语句是(①)语句。 ①、顺序 ②、并行 ③、顺序或并行 ④、串行 39、 Verilog HDL的always块本身是(②)语句。 ①、顺序 ②、并行 ③、顺序或并行 ④、串行 程序题 1.用 begin-end 串行块产生信号波形试画出波形 `timescale 10ns/1ns module wave1; reg wave; parameter cycle=10; initial begin wave=0; #(cycle/2) wave=1; #(cycle/2) wave=0; #(cycle/2) wave=1 ; #(cycle/2) wave=0; #(cycle/2) wave=1; #(cycle/2) $finish ; end initial $monitor($time,,,"wave=%b",wave); endmodule 2. 写出产生下图所示波形的变量Stream的初始化语句。 `timescale 1ns/1ns module Test (Stream) ; output Stream; reg Stream; initial begin Stream =0; #12 Stream = 1; #5 Stream = 0; #3 Stream = 1; #4 Stream = 0; #2 Stream = 1; #5 Stream = 0; end endmodule 三、使用连续赋值语句assign编程程序: 使用连续赋值语句assign的方式描述如图所示的电路(模块名Boolean_Ex) Module Boolean_Ex(A,B,C,M1,M2); Input A,BC; Ouput M1,M2; assign M1=A|(C&(~B)); assign M2=B; endmodule 四、解释程序 1.解释带有下划线的语句。画出该程序的引脚示意图。说明设计电路的功能。 Module JK_FF(CLK,J,K,Q,RS,SET);//模块名JK_FF(端口列表CLK,J,K,Q,RS,SET) Input CLK,J,K,SET,RS;//模块的输入端口为CLK,J,K,SET,RS Output Q; //模块的输出端口为Q reg Q; always@(posedge CLK or negedge RS or negedge SET) //CLK上升沿触发,RS、SET下降沿触发 Begin If(!RS) Q<=1’b0; //异步清0,低电平有效 else if(!SET) Q<=1’b1 //异步清预置1 else case({J,K}) 2’b00:Q<=Q; 2’b01:Q<=1’b0; 2’b10:Q<=1’b1; 2’b11:Q<=~Q; default:Q<=1’bx; endcase end endmodule 程序的引脚示意图: 逻辑功能是:带异步清0、异步置1的JK触发器 2. module lxpp(y, d0,d1,d2,d3,d4,d5,d6,d7,s2,s1,s0); //模块名为lxpp (端口列表y, d0,d1,d2,d3,d4,d5,d6,d7,s2,s1,s0) input s2,s1,s0; //模块的输入端口为s2,s1,s0 input d0,d1,d2,d3,d4,d5,d6,d7; output y; reg y; //定义信号的数据类型 always begin //逻辑功能描述 case ( { s2,s1,s0 }) 3'b000: y=d0; 3'b001: y=d1; 3'b010: y=d2; 3'b011: y=d3; 3'b100: y=d4; 3'b101: y=d5; 3'b110: y=d6; 3'b111: y=d7; endcase end endmodule 程序的引脚示意图: 逻辑功能是:该Verilog HDL源程序设计的是8选1数据选择器,d7~d0是数据输入端,s2、s1和s0是控制输入端,y是数据输出端。当s2s1s0=000时,d0数据被选中,输出y=d0;当s2s1s0=001时,d1数据被选中,输出y=d1;以此类推 3. module expp(q,cout,ena,clk,clr); //模块名为expp (端口列表q,cout,ena,clk,clr) input ena,clk,clr; //输入ena,clk,clr output [7:0] q; //输出加法计数q,8位 output cout; //进位输出cout reg [7:0] q; //定义信号的数据类型 always @(posedge clk) //敏感信号列表clk电平触发 begin if (~clr) q = 'b00000000; //逻辑功能描述 else if (ena) q = q+1; end assign cout= &q; endmodule 程序的引脚示意图: 逻辑功能是:该Verilog HDL源程序设计带复位和使能控制的8位二进制加法计数器电路。clk是时钟输入端。clr是复位控制输入端,当clr=0时,计数器被复位。ena是使能控制输入端,当ena=1时,计数器工作,ena=0时,计数器状态不变(保持)。在ena=1和clr=1时,电路每接收到一个clk时钟的下降沿,计数器状态加1。当计数器状态为“11111111”(最大值)时,进位输出cout=1,产生向高位的计数进位。 4. module up_downcnt(Sum,Cout,en,clk,rst,up);//定义模块 input en,clk,rst,up; output [2:0]Sum;//输出,逻辑位向量 output Cout; reg Cout; reg [2:0]q; assign Sum=q;//将内部寄存器的计数结果输出至Sum always@(posedge clk or negedge rst)//过程,敏感信号clk,rst begin If (!rst) q=3’h00;//异步清零,低电平有效 else if(en) begin;//计数使能端,高电平有效 if(up) q=q+1;//up=1时,加计数 else q=q-1;end//up=0时,减计数 end always @(q) //组合电路之过程 if ((up&q[2]&q[1]&q[0])|(~up&~q[2]&~q[1]&~q[0])) Cout=1’b1;//Cout输出进位标志或借位1 else Cout=1’b0;//否则,进位标志或借位0 endmodule 逻辑功能:是一个3位增1/减1计数器,当输入信号UP等于1时, 计数器增1;当输入信号UP等于0时计数器减1。 5. module mux21(a,b,s,y); //定义模块名mux21 input a,b,s; //a,b,s为输入端口,数据类型bit output y; reg y; //定义y为寄存器变量 always@(a or b or s) //过程,敏感信号a,b,s begin: mux21 case(s) 1’b0:y<=a; //当s=0时,y=a,否则等b 1’b1:y<=b; default:y<=a; endcase end endmodule 程序引脚图: 逻辑功能:二选一数据选择器 编写程序 1. 用门级建模语句设计如图所示电路。 Verilog程序如下 module muxtwo (out, a, b, sl); input a,b,sl; output out; not u1(nsl,sl); and u2(sela,a,nsl); and u3(selb,b,sl); or u4(out ,sela,selb); endmodule 2.给出RTL图的Verilog描述 module RTL2(A,B,C,D,Y) output Y; intput A,B,C,D; reg Y; //or(TP1,A,B);/*用门级电路可以*/ //and(TP2,C,D); assign TP1=A|B; /*用assign连续赋值语句也可以*/ assign TP2=C&D; always@(TP1,TP2,A) begin if(TP==1) Y=TP1^TP2; else Y=A; end endmodule 3.编写8位左移移位寄存器的VerilogHDL源程序。设电路的并行数据输入端为d[7:0],并行数据输出端为q[7:0],串行数据输入端为ds1,时钟输入端为clk。ldn是预置控制输入端,当ldn=0时,q[7:0]=d[7:0]。clrn是复位控制输入端,当clrn=0时,移位寄存器被复位。 解:8位左移移位寄存器的Verilog HDL源程序如下: module shl8_v(clr, clk,dsl,ldn,d,q); input clr, clk,dsl,ldn; input[7:0] d; output[7:0] q; reg[7:0] q; always @(posedge clk or posedge clr) begin if (clr) begin q=8'b00000000; end else if (~ldn) begin q=d; end else begin q[7:1]=q[6:0];q[0]=dsl; end end endmodule 4.设计一个带有异步清零功能的十进制计数器,计数器时钟CLK上升沿有效,清零端CLRN,进位输出CO。 module CNT10(CLK,CLRN,CO,DOUT); input CLK,CLRN; //时钟,复位控制信号输入口 output [3:0] DOUT; //计数数据输出信号口 out put CO; //计数进位输出 reg[3:0] Q1; reg CO; assign DOUT Q1; //将内部寄存器的计数结果输出至DOUT always @(posedge CLK or negedge CLRN) begin //时序过程 if(!CLRN)Q<=0; //RST=0时,对内部寄存器单元异步清零 else if(Q1<9) Q1<Q1+1; //当Q1小于9时,允许累加 else Q1<4’b0000; //否则一个时钟后清0返回初值 end always@( Q1) //组合电路之过程 if(Q1==4’h9)CO=1’b1; //当Q1=1001时,CO输出进位标志1 else CO=1’b0; //否则,输出进位标志0 endmodule 5.已知电路原理图如下,请用基于基本库元件的结构描述方法编写其Verilog HDL程序。 module combinational_logic(y,a,b,s) output y; input a,b,s; wire sn,a1,b1; not(sn,s); and(a1,a,sn); and(b1,s,b); or(y,a1,b1); endmodule 6.用Verilog HDL语言编写2位带进位的加法器 module f_adder(a0,a1,b0,b1,ci,co,s1,s2); output co,s1,s2; input a0,a1,b0,b1,ci; wire e; adder_1 u1(.X(a0),.Y(a1),.CIN(ci),.COUT(e).SUM(s1)); adder_1 u2(.X(b0),.Y(b1),.CIN(e),.COUT(co).SUM(s2)); endmodule 7.用Verilog HDL语言的CASE语句编写2-4译码器。 module decoder2-4(A,B,G1,G2AN,G2BN,Y) input A,B,G1
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服