- 376.27 KB
- 2022-07-28 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
填空题1,、硬件描述语言(HDL)是EDA技术的重要组成部分,是电子系统硬件行为描述、结构描述、数据流描述的语言。它的种类很多,如VHDL、VerilogHDL、AHDL。2、CPLD是寄语乘积项的可编程结构,即由可编程的与阵列和固定的或阵列来完成功能。面FPGA采用查找表LUT结构的可编程结构。3、VerilogHDL的数字可以用二进制、十进制、八进制和十六进制4仲不同数制来表示。4、在VerilogHDL中还存在两种特殊的取值,高阻态(Z或者z)和不定态(X或者x)。5、VerilogHDL模块的I/O声明模块端口定义中各端口数据流动方向,包括输入(input)、输出(output)和双向(inout)。6、FPGA由可编程逻辑块(CLB)、可编程互连单元(I/O)和可编程互连三种可编程电路和一个SRAM结构的配置存储单元组成。7、摩尔状态机中,其输出只是当前状态值的函数,并且仅在时()()沿到来时才发生变化。8、EDA数字系统工程设计流程包括:设计准备、设计输入、设计实现、器件编程与配置、设计验证。9、对综合而言,VerilogHDL的wire型变量的取值可以是0、1、x和z。10、如果VerilogHDL操作符的操作数只有1个,称为单目操作;如果操作符的操作数有2个,称为双目操作;如果操作符的操作数有3个,称为三目操作。11、QuartusⅡ的编程系在设计文件包括引脚锁定和编程下载两个部分。12、VerilogHDL中,register型变量有reg、integer、rea和time4种。13、VerilogHDL的模块短空定义用来声明电路设计模块的输入端口和输出端口。14、VerilogHDL的功能描述是用来描述设计模块的内部结构和模块端口间的逻辑关系。15、在VerilogHDL中,赋值语句有门基元、连续赋值、过程赋值和非阻塞赋值4种。16、VerilogHDL的连续赋值语句的关键字是assign,赋值符号是=。17、在VerilogHDL中,结构描述包括门级(GateLevel)和开关级(SwitchLevel)两种抽象级别。18、VerilogHDL的always块语句中的语句是顺序语句,always块本身却是并行语句。19、在VerilogHDL模块中,任务用来单独完成某项具体任务,并被模块或其他任务调用。20、在VerilogHDL的语句中,系统对表达式的值进行判断,若值为0,则按假处理;若为1,则按真处理。21、一个完整的VerilogHDL设计模块包括:端口定义、I/O声明、信号类型声明和功能描述4个部分。22、Verilog模块可以非为两种类型:一种是未了让模块最终能生成电路的结构,另一种只是为了测试所设计电路的逻辑功能是否正确。23、在VerilogHDL中,使用posedge关键字声明事件是由输入信号的上升沿触发的;使用negedge关键字声明事件是由输入信号的下降沿触发的。简单题1.元件例化语句的作用是什么?答:元件例化语句作用:把已经设计好的设计实体称为一个元件成个模块,它可以被高层次的设计引用,是使VerilogHDL设计构成自上而下层次设计的重要途径。2.VerilogHDL的操作符有哪几类?答:VerilogHDL提供了丰富的运算操作符,其中包括逻辑操作符、算术操作符、关系操作符、等式操作符、条件操作符、位操作符、缩位操作符、移位操作符和拼接操作符等9类。3.简述层次结构设计的优点。答:层次化设计是一种模块化的设计方法,设计人员对设计的描述由上而下逐步展开,符合常规的思维习惯;由于顶层设计与具体的器件和工艺无关,因此易于在个种可编程逻辑器件中间进行移植。层次化的设计方法可以使多个设计人员同时进行操作,有利于对设计任务进行合理的分配并用系统工程的方法对设计进行管理。4.在数字系统设计中锁定引脚的作用是什么?答:将设计文件中的输入、输出信号定位到所选期间的具体物理管脚。\n5.简述自顶而下的设计指思想。答:自顶而下的设计指的是将一个大规模的数字电路系统从功能上化为若干个不相交的子模块,每个子模块又可以根据需要在功能上化为若干个二级子模块,依此类推,直到功能模块小到比较容易实现为止。6.简述使用always描述组合逻辑电路的规则答:在描述组合逻辑电路时,always在使用上有以下几个特点(或者说是规则);1)在敏感列表中使用电平敏感事件,不要使用边沿敏感。2)为变量赋值的使用阻塞赋值,不要使用非阻塞赋值。另外,在always块内被赋值的变量必须为寄存器型变量。因此尽管在组合逻辑中不包含任何记忆单元,但是如果变量需要在always块内被赋值,就必须定义为寄存器型,这并不表示所描述的数字电路系统中包含有记忆元件。7.系统任务$stop和$finish的区别是什么? 答:系统任务$stop和$finish的区别是,系统任务$stop用于暂停仿真,系统任务$finish用于结束仿真。 $stop使仿真进入一种交互模式,设计者可以在此模式下对设计进行调试。当设计者想要暂停仿真来检查信号的值时,可以使用这个系统函数。 系统任务$finish用于结束仿真。8.VerilogHDL的基本单元——模块主要包括哪些内容?主要作用是什么?答:模块(module)是VerilogHDL对数字电路系统建模的基本单元,每个模块包括模块名称、端口列表、端口类型列表、内部变量定义以及逻辑功能描述等几个部分。模块名称:模块取一个和其功能相关的名字端口列表:模块的输入和输出端口端口类型列表:定义各个端口的方向如(输入端口、输出端口和双向端口)内部变量定义:内部变量可以使程序变得更有条理逻辑功能描述:是一个模块的主体,它描述了模块的输出信号和输入信号的逻辑关系。9.使用timescale编译器指令的目的是什么?举出一个实例答:timescale1ns/100ps此语句说明时延时间单位为1ns并且时间精度为100ps(时间精度是指所有的时延必须被限定在0.1ns内)。如果此编译器指令所在的模块包含上面的连续赋值语句,#2代表2ns。10.UDP代表什么?答:用户定义原语(UDP)。创建的灵活性:用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。11.写出两个基本逻辑门的名称。答:基本逻辑门,例如and、or和nand等都内置在语言中12.VerilogHDL中的两类主要数据类型是什么?答:VerilogHDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。13.阻塞性赋值和非阻塞性赋值有何区别?答:阻塞赋值使用“=”为变量赋值,在赋值结束以前不可以进行其他操作,在赋值结束后继续后面的操作。这个过程就好像阻断了程序的运行,因而被成为阻塞赋值。连续的阻塞赋值操作是顺序完成的。非阻塞赋值使用“<=”为变量赋值,在执行到赋值语句时,仅仅对“<=”右侧的表达式的值进行评估,但并不马上执行赋值,然后继续执行后面的操作。这个过程就好像没有阻断程序的运行,因而被成为非阻塞赋值。连续的非阻塞赋值操作是同时完成的。多条阻塞赋值语句是顺序执行的,而多条非阻塞语句是并行执行的,这就是两者的区别。14.VerilogHDL支持哪三种基本描述方式?答:行为描述方式(过程化结构建模),数据流方式(连续赋值语句方式),结构化方式(使用门和模块实例语句描述建模)。15.可以使用VerilogHDL描述一个设计的时序吗?答:VerilogHDL可以清晰的建立时序模型,故可以使用VerilogHDL描述一个设计的时序。16.在数据流描述方式中使用什么语句描述一个设计?答:设计的数据流行为使用连续赋值语句进行描述\n17.什么是硬件描述语言?它的主要作用是什么?答:硬件描述语言HDL(HardwareDescriptionLanguage)是一种用形式化方法来描述数字电路和系统的语言。数字电路系统的设计者利用这种语言可以从上层到下层(从抽象到具体),逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。18.目前常用的HDL硬件描述语言有几种,各有什么特点?答:目前常用的HDL主要有:VHDL、VerilogHDL、SystemVerilog、SystemC;VerilogHDL成为某层电路建模与设计中最流行的硬件描述语言;VHDL是在高层次上描述系统和元件的行为建模工具;SystemVerilog主要定位于集成电路的实现和验证流程,并为系统级设计流程提供了强大的链接能力;SystemC主要用于ESL(电子系统级)建模与验证。19.什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么?答:在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。有以下几种类型:(1)从自然语言转换到VHDL语言算法表示,即自然语言综合。(2)从算法表示转换到寄存器传输级(RegisterTransportLevel,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。\n阻塞式赋值的特点是,一旦执行完当前的赋值语句,赋值目标变量y即刻获得来自等号右侧表达式的计算值。如果在一个块语句中含有多条阻塞式赋值语句,则当执行到其中某条赋值语句时,其他语句将禁止执行,即如同被阻塞了一样。非阻塞式赋值的特点是必须在块语句执行结束时才整体完成赋值操作。非阻塞的含义可以理解为在执行当前语句时,对于块中的其他语句的执行情况一律不加限制,不加阻塞。这也可以理解为,在begin_end块中的所有赋值语句都可以并行运行。23.简单叙述任务与函数的不同点。答:任务和函数有些不同,主要的不同有以下4点;(1)函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。(2)函数不能启动任务,而任务能启动其他任务和函数。(3)函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。(4)函数返回一个值,而任务则不返回值。选择题1、VerilogHDL是由(②)语言演化过来的。①、BASIC②、C语言③、PASCAL④、VHDL2、VerilogHDL的设计模块可以被高层次的系统(④),成为系统的一部分。①、输入②、输出③、仿真④、调用3、VerilogHDL的模块端口定义用来声明电路设计模块的(④)端口。①、输入②、输出③、双向④、全部输入/输出4、用VerilogHDL的assign语句建模的方法一般成为(①)方式。①、连续赋值②、并行赋值③、串行赋值④、函数赋值5、在VerilogHDL的转移操作运算中,用符号“<<”实现对操作数的(③)操作。①、逻辑右移②、算术右移③、逻辑左移④、算术左移6、在VerilogHDL模块中,tack语句类似高级语言中的(④)。①、函数②、常数③、变量④、子程序7、VerilogHDL的always块语句中的语句是(①)语句。①、顺序②、并行③、顺序或并行④、串行8、在VerilogHDL的缩减操作运算中,设A=8’b11010001,则“|A”运算的结果为(②)。①、0②、1③、x④、z9、在下列符号组中,(②)不能作为VerilogHDL的标识符。①、CT74138②、74LS138③、_74138④、CT7413810、在VerilogHDL的常数中,八进制数符号是用(③)表示。①、d或D②、b或B③、o或O④、h或H11、。。。。。。。。。调用时返回一个用于(④)的值。①、程序包②、输入③、输出④、表达式12、在VerilogHDL中,语句“always@(negedgeclk)”表示模块的事件是由clk的(①)触发的。①、下降沿②、上升沿③、高电平④、低电平13、在VerilogHDL中,连续赋值语句的“:”号两边的变量都应该是(①)型变量。①、wire②、register③、wire或register④、integer14、在VerilogHDL的端口声明语句中,用(①)关键字声明端口为双向方向。①、inout②、INOUT③、BUFFER④、buffer15、在VerilogHDL的常数中,二进制数符号是用(②)表示。①、d或D②、b或B③、o或O④、h或H16、在VerilogHDL的逻辑运算中,设A=8’b00011001,则表达式“A&B”的结果为(①)。①、8’b00010001②、8’b11011001③、8’b11001000④、8’b0011011117、在VerilogHDL的关系运算中,如果关系是真,则计算结果为(②)。①、0②、1③、x④、z\n1、在VerilogHDL的转移操作中,用符号“>>”实现对操作数的(①)。①、逻辑右移②、算术右移③、逻辑左移④、算术左移2、在VerilogHDL中,连续赋值语句的关键字是(①)。①、assign②、ASSIGN③、Assign④、以上均可3、在VerilogHDL中,语句“always@(posedgeclk)”表示模块的事件是用clk的(②)触发的。①、下降沿②、上升沿③、高电平④、低电平4、答案貌似选2,IEEE#1064-1995.①、②、IEEE#1064-1995③、IEEE.STD_LOGIC_1164④、IEEESTDI076-19935、一个能为VerilogHDL综合器接受,并能作为一个独立设计单元的完整的VerilogHDL程序称为(③)。①、设计输入②、设计输出③、设计模块④、设计结构6、VerilogHDL的设计模块可以被高层次的系统(④),成为系统的一部分。①、输入②、输出③、仿真④、调用7、VerilogHDL的模块端口定义用来声明电路设计模块的(④)端口。①、输入②、输出③、双向④、全部输入/输出8、在VerilogHDL模块的I/O声明中,用来声明端口数据流动方向的关键字包括(④)①、input②、output③、inout④、以上均是9、在VerilogHDL的端口声明语句中,用(①)关键字声明端口为输入方向。注意:input是小写。①、input②、INPUT③、IN④、output10、VerilogHDL的功能描述是用来描述设计模块的内部结构和模块端口间的逻辑关系,通常把确定这些设计模块描述的方法称为(③)。①、综合②、仿真③、建模④、设计11、用VerilogHDL的assign语句建模的方法一般称为(①)方式。①、连续赋值②、并行赋值③、串行赋值④、函数赋值12、用VerilogHDL的元件例化方式建模来完成的设计一般属于(②)描述方式。①、行为②、结构③、功能④、行为和结构13、VerilogHDL程序的每个模块的内容都是在(③)两语句之间。①、start和endmodule②、module和end③、module和endmodule④、start和endstart14、在VerilogHDL的常数中,未知数字是用(②)表示。注意:x为小写。①、X②、x③、Z④、z15、VerilogHDL的标识符可以是字母、数字和下划线“_”等符号组成的任意序列,但首字母不能是(③)。①、大写字母②、小写字母③、数字④、下划线“_”16、在VerilogHDL的标识符中使用字母的规则是(②)。①、大小写相同②、大小写不同③、只允许用大写④、只允许用小写17、在VerilogHDL的逻辑运算中,设A=8’b||010001,B=8’b00011001,则表达式A|B结果为(②)。①、8’b00010001②、8’b11011001③、8’b11001000④、8’b0011011118、在VerilogHDL的逻辑运算中,设A=8’b||010001,B=8’b00011001,则表达式A^B结果为(③)。①、8’b00010001②、8’b11011001③、8’b11001000④、8’b0011011119、在VerilogHDL的设计模块中,最常用的寄存器型变量是(①)型变量。①、reg②、nets③、reg或nets④、ineger20、在VerilogHDL中,连续赋值语句的“=”号两边的变量都应该是(①)型变量。①、wire②、register③、wire或register④、integer21、VerilogHDL的always块语句中的语句是(①)语句。①、顺序②、并行③、顺序或并行④、串行22、VerilogHDL的always块本身是(②)语句。①、顺序②、并行③、顺序或并行④、串行\n程序题1.用begin-end串行块产生信号波形试画出波形`timescale10ns/1nsmodulewave1;regwave;parametercycle=10;initialbeginwave=0;#(cycle/2)wave=1;#(cycle/2)wave=0;#(cycle/2)wave=1;#(cycle/2)wave=0;#(cycle/2)wave=1;#(cycle/2)$finish;endinitial$monitor($time,,,"wave=%b",wave);endmodule2.写出产生下图所示波形的变量Stream的初始化语句。`timescale1ns/1nsmoduleTest(Stream);outputStream;regStream;initialbeginStream=0;#12Stream=1;#5Stream=0;#3Stream=1;#4Stream=0;#2Stream=1;#5Stream=0;endendmodule三、使用连续赋值语句assign编程程序:使用连续赋值语句assign的方式描述如图所示的电路(模块名Boolean_Ex)ModuleBoolean_Ex(A,B,C,M1,M2);InputA,BC;OuputM1,M2;assignM1=A|(C&(~B));assignM2=B;endmodule\n四、解释程序1.解释带有下划线的语句。画出该程序的引脚示意图。说明设计电路的功能。ModuleJK_FF(CLK,J,K,Q,RS,SET);//模块名JK_FF(端口列表CLK,J,K,Q,RS,SET)InputCLK,J,K,SET,RS;//模块的输入端口为CLK,J,K,SET,RSOutputQ;//模块的输出端口为QregQ;always@(posedgeCLKornegedgeRSornegedgeSET)//CLK上升沿触发,RS、SET下降沿触发BeginIf(!RS)Q<=1’b0;//异步清0,低电平有效elseif(!SET)Q<=1’b1//异步清预置1elsecase({J,K})2’b00:Q<=Q;2’b01:Q<=1’b0;2’b10:Q<=1’b1;2’b11:Q<=~Q;default:Q<=1’bx;endcaseendendmodule程序的引脚示意图:逻辑功能是:带异步清0、异步置1的JK触发器2.modulelxpp(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)inputs2,s1,s0;//模块的输入端口为s2,s1,s0inputd0,d1,d2,d3,d4,d5,d6,d7;outputy;regy;//定义信号的数据类型alwaysbegin//逻辑功能描述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;endcaseendendmodule程序的引脚示意图:逻辑功能是:该VerilogHDL源程序设计的是8选1数据选择器,d7~d0是数据输入端,s2、s1和s0是控制输入端,y是数据输出端。当s2s1s0=000时,d0数据被选中,输出y=d0;当s2s1s0=001时,d1数据被选中,输出y=d1;以此类推\n3.moduleexpp(q,cout,ena,clk,clr);//模块名为expp(端口列表q,cout,ena,clk,clr)inputena,clk,clr;//输入ena,clk,clroutput[7:0]q;//输出加法计数q,8位outputcout;//进位输出coutreg[7:0]q;//定义信号的数据类型always@(posedgeclk)//敏感信号列表clk电平触发beginif(~clr)q='b00000000;//逻辑功能描述elseif(ena)q=q+1;endassigncout=&q;endmodule程序的引脚示意图:逻辑功能是:该VerilogHDL源程序设计带复位和使能控制的8位二进制加法计数器电路。clk是时钟输入端。clr是复位控制输入端,当clr=0时,计数器被复位。ena是使能控制输入端,当ena=1时,计数器工作,ena=0时,计数器状态不变(保持)。在ena=1和clr=1时,电路每接收到一个clk时钟的下降沿,计数器状态加1。当计数器状态为“11111111”(最大值)时,进位输出cout=1,产生向高位的计数进位。4.moduleup_downcnt(Sum,Cout,en,clk,rst,up);//定义模块inputen,clk,rst,up;output[2:0]Sum;//输出,逻辑位向量outputCout;regCout;reg[2:0]q;assignSum=q;//将内部寄存器的计数结果输出至Sumalways@(posedgeclkornegedgerst)//过程,敏感信号clk,rstbeginIf(!rst)q=3’h00;//异步清零,低电平有效elseif(en)begin;//计数使能端,高电平有效if(up)q=q+1;//up=1时,加计数elseq=q-1;end//up=0时,减计数endalways@(q)//组合电路之过程if((up&q[2]&q[1]&q[0])|(~up&~q[2]&~q[1]&~q[0]))Cout=1’b1;//Cout输出进位标志或借位1elseCout=1’b0;//否则,进位标志或借位0endmodule逻辑功能:是一个3位增1/减1计数器,当输入信号UP等于1时,计数器增1;当输入信号UP等于0时计数器减1。5.modulemux21(a,b,s,y);//定义模块名mux21inputa,b,s;//a,b,s为输入端口,数据类型bit\noutputy;regy;//定义y为寄存器变量always@(aorbors)//过程,敏感信号a,b,sbegin:mux21case(s)1’b0:y<=a;//当s=0时,y=a,否则等b1’b1:y<=b;default:y<=a;endcaseendendmodule程序引脚图:逻辑功能:二选一数据选择器编写程序1.用门级建模语句设计如图所示电路。Verilog程序如下modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;notu1(nsl,sl);andu2(sela,a,nsl);andu3(selb,b,sl);oru4(out,sela,selb);endmodule2.给出RTL图的Verilog描述moduleRTL2(A,B,C,D,Y)outputY;intputA,B,C,D;regY;//or(TP1,A,B);/*用门级电路可以*///and(TP2,C,D);assignTP1=A|B;/*用assign连续赋值语句也可以*/assignTP2=C&D;always@(TP1,TP2,A)beginif(TP==1)Y=TP1^TP2;elseY=A;endendmodule3.编写8位左移移位寄存器的VerilogHDL源程序。设电路的并行数据输入端为d[7:0],并行数据输出端为q[7:0],串行数据输入端为ds1,时钟输入端为clk。ldn是预置控制输入端,当ldn=0时,q[7:0]=d[7:0]。clrn是复位控制输入端,当clrn=0时,移位寄存器被复位。解:8位左移移位寄存器的VerilogHDL源程序如下:moduleshl8_v(clr,clk,dsl,ldn,d,q);inputclr,clk,dsl,ldn;\ninput[7:0]d;output[7:0]q;reg[7:0]q;always@(posedgeclkorposedgeclr)beginif(clr)beginq=8'b00000000;endelseif(~ldn)beginq=d;endelsebeginq[7:1]=q[6:0];q[0]=dsl;endendendmodule4.设计一个带有异步清零功能的十进制计数器,计数器时钟CLK上升沿有效,清零端CLRN,进位输出CO。moduleCNT10(CLK,CLRN,CO,DOUT);inputCLK,CLRN;//时钟,复位控制信号输入口output[3:0]DOUT;//计数数据输出信号口outputCO;//计数进位输出reg[3:0]Q1;regCO;assignDOUTQ1;//将内部寄存器的计数结果输出至DOUTalways@(posedgeCLKornegedgeCLRN)begin//时序过程if(!CLRN)Q<=0;//RST=0时,对内部寄存器单元异步清零elseif(Q1<9)Q1