蔡觉平老师西电VerilogHDL上机大作业硬件描述语言_微电子学院
Verilog HDL数字集成电路设计原理与应用 作者 蔡觉平_ 第1章
HDL语言发展至今,产生了很多种对于数字集成电路 的描述性设计语言,并成功地应用于设计的各个阶段(建模、 仿真、验证和综合等)。20世纪80年代至今,已出现了上百 种硬件描述语言,它们对设计自动化起到了极大的促进和 推动作用,主要有Gateway Design Automation公司提出的 Verilog HDL、美国国防部高级研究计划局(DARPA)设计的 VHDL、美国国防部RPASSP(Rapid Prototyping of Application Specification Signal Processing)计划提出的基于 18 面向对象的OO VHDL(Object Oriented VHDL)、美国杜克 大学的DE VHDL(Duke Extended VHDL)
第1章 Verilog HDL数字集成电路 设计方法概述
➢1.1 数字集成电路的发展和设计方法的演变
➢ 1.2 硬件描述语言
➢1.3 Verilog HDL的发展和国际标准
➢1.4 Verilog HDL和VHDL
➢1.5 Verilog HDL在数字集成电路设计中的优点
➢1.6 功能模块的可重用性
20世纪80年代(第二次变革时期)是标准工艺加工线 (Foundry)公司与IC设计公司共同发展的阶段,主流产品是 MPU、微控制器(Micro Control Unit,MCU)及专用 IC(Application-Specific IC,ASIC)。这时,Foundry和IC设 计公司相结合的方式开始成为集成电路产业发展的新模式。 这一时期,IC产业开始进入以客户为导向的阶段。首先, 标准化功能的IC已难以满足整机客户对系统成本、可靠性 等的要求;其次,由于小尺寸加工技术的进步,软件的硬 9 件化已成为可能,超大规模集成电路(Very Large Scale Integrated,VLSI)开始成为主流芯片;
FPGA-Verilog试题(西安电子科技大学)
西安电子科技大学考试时间分钟试题题号一二三四五六七八九十总分分数1.考试形式:闭(开)卷;2.本试卷共四大题,满分100分。
班级学号姓名任课教师一、选择题(每题2分,共18分)1. 下面哪个是可以用verilog语言进行描述,而不能用VHDL语言进行描述的级别?( A )(A) 开关级 (B)门电路级 (C) 体系结构级 (D) 寄存器传输级2.在verilog中,下列语句哪个不是分支语句?( D )(A) if-else (B) case (C) casez (D) repeat3.下列哪些Verilog的基本门级元件是多输出( D )(A) nand (B) nor (C) and (D) not4.Verilog连线类型的驱动强度说明被省略时,则默认的输出驱动强度为( B )(A) supply (B) strong (C) pull (D) weak5.元件实例语句“notif1 #(1:3:4,2:3:4,1:2:4) U1(out,in,ctrl);”中截至延迟的典型值为( B )(A) 1 (B) 2 (C) 3 (D) 46.已知“a =1b’1; b=3b'001;”那么{a,b}=( C )(A) 4b'0011 (B) 3b'001 (C) 4b'1001 (D) 3b'101第 2 页共 8 页7.根据调用子模块的不同抽象级别,模块的结构描述可以分为(ABC )(A) 模块级 (B)门级 (C) 开关级 (D) 寄存器级8.在verilog语言中,a=4b'1011,那么 &a=(D )(A) 4b'1011 (B) 4b'1111 (C) 1b'1 (D) 1b'09.在verilog语言中整型数据与( C )位寄存器数据在实际意义上是相同的。
(A) 8 (B) 16 (C) 32 (D) 64二、简答题(2题,共16分)1.Verilog HDL语言进行电路设计方法有哪几种(8分)1、自上而下的设计方法(Top-Down)2、自下而上的设计方法(Bottom-Up)3、综合设计的方法2.specparam语句和parameter语句在参数说明方面不同之处是什么(8分)。
Verilog HDL硬件描述语言实验报告
Verilog HDL实验报告学院:应用科学学院班级:电科13-2班姓名:学号:实验一组合逻辑电路设计(1)实验目的(1)熟悉FPGA设计流程;(2)熟悉DE2开发板的基本元件使用(开关、发光二极管);(3)学习基本组合逻辑元件的Verilog HDL设计以及实现(数据选择器);(4)掌握连续赋值语句使用;实验内容本实验的目的是学习如何连接一个简单的外部输入、输出器件到FPGA 芯片以及如何在FPGA器件上实现逻辑电路控制简单外部器件。
考虑使用DE2开发板上拨动开关SW17-0(toggle Switch)作为电路的输入。
使用发光二极管(Light Emitt-ing Diodes,LEDs)和7段显示数码管(7-segment Display)作为电路的输出。
第1部分连续赋值语句步骤1、新建Quartus II工程,选择Cyclone II EP2C35F672C6作为目标芯片,该芯片是DE2开发板上的FPGA芯片;2、编写Verilog HDL代码加入到Quaruts II工程;3、引脚分配,并编译工程该工程;4、将编译好的电路下载到FPGA器件。
扳动拨动开关观察相应的发光二极管显示,验证电路功能是否正确;代码module part1(input wire[2:0]SW,output wire LEDR);wire r_g,s_g,qa,qb;and u1(r_g, SW[0], SW[1]);and u2(s_g, SW[1], SW[2]);nor u3(qa, r_g, qb);nor u4(qb, qa, s_g);assign LEDR = qa;endmodule第2部分简单的数据选择器步骤1 .新建Quartus II工程;2.在工程中加入8位宽的2选1数据选择器Verilog HDL代码。
使用DE2开发板上的SW17作为输入s,开关SW7-0作为输入X,SW15-8作为输入Y。
VerilogHDL硬件描述语言PPT课件
三、 Verilog HDL硬件描述语言
1
整体 概述
2
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙述内容
课程安排
一、可编程逻辑器件基础 二、数字系统设计方法 三、Verilog HDL硬件描述语言 四、开发软件介绍 五、应用实验 六、考核方式
21
2.Verilog HDL建模概述
▪ 2.7 三种建模方式
结构化描述方式
通过对电路结构的描述来建模,即通过对器件的调用 (HDL概念称为“例化”),并使用线来连接各器件 的描述方式
4
1.Verilog HDL概述
1.1什么是Verilog HDL?
Verilog HDL(Hardware Discription Language) 一种硬件描述语言,用于从算法级、门级到开关级 的多种抽象设计层次的数字系统建模。
5
1.Verilog HDL概述
1.2Verilog在VLSI设计过程中的位置
实际器件相类比 每个模块要进行端口定义,并说明输入、输出口,
然后对模块的功能进行逻辑描述(测试模块例外) 书写格式自由,一行可以写几个语句,一个语句可
以分几行写。 除end语句结束
16
2.Verilog HDL建模概述
▪ 2.4 模块语法
17
2.Verilog HDL建模概述
7
1.Verilog HDL概述
1.4 Verilog与VHDL
➢使用情况 •美国:Verilog: 60%, VHDL: 40% •台湾:Verilog: 50%, VHDL: 50%
➢两者的区别: •VHDL侧重于系统级描述,从而更多的为系统 级设计人员所采用 •Verilog侧重于电路级描述,从而更多的为电路 级设计人员所采用
verilog硬件描述语言上机
verilog硬件描述语言上机《硬件描述语言》上机作业西电微电子\第一题:用Verilog语言的结构描述和行为描述分别设计下面的电路。
A[0] Array B[0]A[1]B[1]A[2]B[2]结构描述:电路设计:module hw1(A,B,Y); input[2:0] A,B;output Y;wire w1,w2,w3;xor U1(w1,A[0],B[0]);xor U2(w2,A[1],B[1]);xor U3(w3,A[2],B[2]);nor U4(Y,w1,w2,w3);endmodule仿真测试:module test_hw1;reg[2:0] A,B;wire Y;hw1 U1(A,B,Y);initialbeginA=3'b000;B=3'b000;#50 A=3'b000;B=3'b000;#50 A=3'b111;B=3'b111;#50 A=3'b000;B=3'b110;#50 A=3'b111;B=3'b000;#50 A=3'b110;B=3'b110;#50 A=3'b011;B=3'b010;#50 A=3'b001;B=3'b011;#50 A=3'b111;B=3'b010;#50 $stop;endinitial $monitor($time,"\tA=%d\tB=%d\tY=%d",A,B,Y); Endmodule行为描述:电路设计:module hw2(A,B,Y);input[2:0] A,B;output Y;wire Y;assign Y=~((A[0]^B[0])||(A[1]^B[1])||(A[2]^B[2])); endmodule 仿真测试:module test_hw2;reg[2:0] A,B;wire Y;hw2 U1(A,B,Y);initialbeginA=3'b000;B=3'b000;#50 A=3'b000;B=3'b000;#50 A=3'b111;B=3'b111;#50 A=3'b000;B=3'b110;#50 A=3'b111;B=3'b000;#50 A=3'b110;B=3'b110;#50 A=3'b011;B=3'b010;#50 A=3'b001;B=3'b011;#50 A=3'b111;B=3'b010;#50 $stop;endinitial $monitor($time,"\tA=%b\tB=%b\tY=%b",A,B,Y); endmodule第二题:参数化电路设计1. 用行为描述方式实现下图所示的具有“one -hot”(独热)状态的环形计数器。
verilog hdl实验报告
verilog hdl实验报告《Verilog HDL实验报告》Verilog HDL(硬件描述语言)是一种用于描述电子系统的硬件的语言,它被广泛应用于数字电路设计和硬件描述。
本实验报告将介绍Verilog HDL的基本概念和使用方法,并通过实验展示其在数字电路设计中的应用。
实验目的:1. 了解Verilog HDL的基本语法和结构2. 掌握Verilog HDL的模块化设计方法3. 熟悉Verilog HDL的仿真和综合工具的使用实验内容:1. Verilog HDL的基本语法和结构Verilog HDL是一种硬件描述语言,其语法和结构类似于C语言。
它包括模块定义、端口声明、信号赋值等基本元素。
在本实验中,我们将学习如何定义Verilog模块,并使用端口声明和信号赋值描述数字电路的行为。
2. Verilog HDL的模块化设计方法Verilog HDL支持模块化设计,可以将复杂的电路分解为多个模块,每个模块描述一个子电路的行为。
在本实验中,我们将学习如何设计和实现Verilog模块,并将多个模块组合成一个完整的数字电路。
3. Verilog HDL的仿真和综合工具的使用Verilog HDL可以通过仿真工具进行功能验证,也可以通过综合工具生成实际的硬件电路。
在本实验中,我们将使用Verilog仿真工具对设计的数字电路进行功能验证,并使用综合工具生成对应的硬件电路。
实验步骤:1. 学习Verilog HDL的基本语法和结构2. 设计一个简单的数字电路,并实现Verilog模块描述其行为3. 使用仿真工具对设计的数字电路进行功能验证4. 使用综合工具生成对应的硬件电路实验结果:通过本实验,我们学习了Verilog HDL的基本概念和使用方法,并成功设计和实现了一个简单的数字电路。
我们使用仿真工具对设计的数字电路进行了功能验证,并使用综合工具生成了对应的硬件电路。
实验结果表明,Verilog HDL在数字电路设计中具有重要的应用价值。
Verilog HDL是一种硬件描述语言
Verilog HDL是一种硬件描述语言(myvanity发布/index.asp) 第一章简介Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。
被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
所有这些都使用同一种建模语言。
此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。
因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。
语言从C编程语言中继承了多种操作符和结构。
Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。
但是,Verilog HDL 语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。
当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
1.1 历史Verilog HDL语言最初是于1983年由Gateway Design Automation公司为其模拟器产品开发的硬件建模语言。
那时它只是一种专用语言。
由于他们的模拟、仿真器产品的广泛使用,Verilog HDL 作为一种便于使用且实用的语言逐渐为众多设计者所接受。
在一次努力增加语言普及性的活动中,Verilog HDL语言于1990年被推向公众领域。
Open Verilog International (OVI)是促进Verilog 发展的国际性组织。
1992年,OVI决定致力于推广Verilog OVI标准成为IEEE标准。
这一努力最后获得成功,Verilog语言于1995年成为IEEE标准,称为IEEE Std 1364-1995。
Verilog HDL数字集成电路设计原理与应用 作者 蔡觉平_ 第2章
字,它是Verilog HDL语言内部的专用词,是事先定义好的 确认符,用来组织语言结构。用户不能随便使用这些关键
字。需注意的是,所有关键字都是小写的。例如,
ALWAYS不是关键字,它只是标识符,与always(关键字) 是不同的。表2.1-1所示为Verilog HDL的常用关键字。 11
2.1.1 空白符
空白符包括空格符(\b)、制表符(\t)、换行符和换页符。
空白符使代码看起来结构清晰,阅读起来更方便。在编译 和综合时,空白符被忽略。
Verilog HDL程序可以不分行,也可以加入空白符采用
多行编写。
4
例2.1-1 空白符使用示例。
initial begin a = 3'b100; b = 3'b010; end
表2.1-1 Verilog HDL中的常用关键字
always and assign attribute begin buf bufif0 bufif1 case casex casez cmos deassign end endattribute endcase endmodule endfunction endprimitive endspecify endtable endtask event for force forever fork function highz0 highz1 if initial inout input integer join large macromodule medium module nand negedge nmos nor not notif0 notif1 or output parameter pmos posedge primitive pull0 pull1 pullup pulldown rcmos real realtime reg release repeat rtran rtranif0 rtranif1 scalared signed small specify specparam strength strong0 strong1 supply0 supply1 table task time tran tranif0 tranif1 tri tri0 tri1 triand trior trireg unsigned vectored wait wand weak0 weak1 while wire wor xnor xor
Verilog硬件描述语言Verilog HDL设计方法概述
建 模 能 力 的 比 较
1.4 Verilog HDL目前的应用情况 和适用的设计
在美国,在高层逻辑电路设计领域Verilog HDL和 VHDL的应用比率是60%和40%,在其它地区各为 50%。Verilog HDL是专门为复杂数字逻辑电路和 系统的设计仿真而开发的,本身就非常适合复杂 数字逻辑电路和系统的仿真和综合。由于Verilog HDL在其门级描述的底层,也就是在晶体管开关的 描述方面比VHDL有强得多得功能,所以即使是 VHDL的设计环境,在底层实质上也是由Verilog HDL描述的器件库所支持的。
近年来,FPGA和ASIC的设计在规模和复杂度 方面不断取得进展,而对逻辑电路及系统的设 计的时间要求却越来越短。这些因素促使设计 人员采用高水准的设计工具,如:硬件描述语 言(Verilog HDL或VHDL)来进行设计。
1.5.2. Verilog HDL设计法与传统的电路 设计法与传统的电路 原理图输入法的比较
采用电路原理图输入法进行设计,具有设计 的周期长,需要专门的设计工具,需手工布线等 缺陷。 而采用Verilog HDL设计时具有以下优点: 1、设计者可以在非常抽象的层次上对线路进 行描述而不必选择特定的制造工艺。逻辑综合工 具可以将设计自动转换成任意一种制造工艺版图。 如果出现新的制造工艺,设计者不必对电路进行 重新设计,只要将RTL级描述输入综合工具,即可 生成针对新工艺的门级网表。(工艺无关性)。
硬核(Hard Core) 在某一种专用半导体集成电路 工艺的(ASIC)器件上实现的经验证是正确的 总门数在5000门以上的电路结构掩膜,称之为 “硬核”。 为了逻辑电路设计成果的积累,和更快更好地 设计更大规模的电路,发展软核的设计和推广 软核的重用技术是非常有必要的。新一代的数 字逻辑电路设计师必须掌握这方面的知识和技 术。
《Verilog HDL硬件描述语言》实验教学大纲
《Verilog HDL硬件描述语言》实验教学大纲
课程代码:MICR3001
课程名称:Verilog HDL硬件描述语言
英文名称:Verilog HDL
实验室名称:微电子实验室
课程学时:72实验学时:18
一、本课程实验教学目的与要求
通过实验要求学生掌握用Verilog HDL硬件描述语言进行集成电路设计的流程和方法。
学会使用Max+plusⅡ,QuartusⅡ设计软件,掌握从HDL源代码的输入→编译→仿真→管脚锁定→下载全过程。
学会用ModelSim设计软件,用Verilog HDL编写测试码对设计模块进行仿真。
二、主要仪器设备及现有台套数
PC,现有35台; EDA实验箱,25套;
1、实验报告:有设计代码,仿真结果,管脚排列,验证结果。
2、考核方式:
(1)实验课的考核方式:教师验收评定成绩。
(2)实验课考核成绩:根据实验完成情况和实验报告是否完整确定,实验课成绩占课程总成绩的10%。
五、实验教材、参考书
1、教材:在编
2、参考书:J.Bhasker著,夏宇闻等译《Verilog HDL入门》.北京航空航天大学出版社.2008出版。
Verilog HDL数字集成电路设计原理与应用 作者 蔡觉平 第3章
1. 显式连续赋值语句
显式连续赋值语句的语法格式如下:
<net_declaration><range><name>; assign #<delay><name>= Assignment expression;
这种格式的连续赋值语句包含两条语句:第一条语句
是对连线型变量进行类型说明的语句;第二条语句是对这 个连线型变量进行连续赋值的赋值语句。赋值语句是由关 键词assign引导的,它能够用来驱动连线型变量,而且只能 5 对连线型变量进行赋值,主要用于对wire型变量的赋值。
计数字电路更类似于使用一些高级语言(如C语言)进行编程,
17 而且Verilog HDL行为级建模的语法结构与C语言也非常相 似。Verilog HDL提供了许多行为级建模语法结构,为设计 者的使用提供了很大的灵活性。
行为描述常常用于复杂数字逻辑系统的顶层设计中,
也就是通过行为建模把一个复杂的系统分解成可操作的若
end initial过程块在进行仿真时从模拟0时刻开始执行,它
在仿真过程中只执行一次,在执行完一次后该initial过程块
就被挂起,不再执行。如果一个模块中存在多个initial过程 块,则每个initial过程块都是同时从0时刻开始并行执行的。
initial过程块内的多条行为语句可以是顺序执行的,也可以
图3.2-1 Verilog HDL行为描述中模块的构成框架
表3.2-1 Verilog HDL行为描述语句及其可综合性
类 别 过程语句 initial always 串行语句块 begin-end 并行语句块 fork-join 连续赋值语句 assign 过程赋值语句=、<= if-else case,casez,casex forever 循环语句 repeat while for `define 编译向导语句 `include `ifdef,`else,`endif √ √ √ √ √ √ √ √ √ 语 句 可综合性
Verilog-HDL数字集成电路设计原理与应用-作者-蔡觉平-第7章
仿真的结果取决于设计描述是否准确反映了设计的物 理实现。仿真器不是一个静态工具,需要Stimulus(激励)和 Response(输出)。Stimulus由模拟设计工作环境的Testbench 产生,Response为仿真的输出,由设计者确定输出的有效 性。
目前,仿真工具比较多,其中Cadence公司的NCVerilog HDL、Synopsys公司的VCS和Mentor公司的 ModelSim都是业界广泛使用的仿真工具。
7.1 数字集成电路设计流程简介
在EDA技术高度发达的今天,没有一个设计工程师队 伍能够用人工方法有效、全面、正确地设计和管理含有几 3 百万个门的现代集成电路。利用EDA工具,工程师可以从 概念、算法、协议等开始设计电子系统,
大量工作可以通过计算机完成,并可以将电子产品从系统 规划、电路设计、性能分析到封装、版图的整个过程在计 算机上自动完成。这样做有利于缩短设计周期、提高设计 正确性、降低设计成本、保证产品性能,尤其是可增加一 次投片的成功率,因此这种方法在大规模集成电路设计中 已经普遍被采用。
20
7.1.8 物理验证
物理验证通常包括设计规则检测(DRC)、版图与原理 图对照(LVS)和信号完整性分析
(SI)等。其中DRC用来检查版图设计是否满足工艺线 能够加工的最小线宽、最小图形间距、金属宽度、栅和有 源区交叠的最小长度等。如果版图设计违反设计规则,那 么极有可能导致芯片在加工的过程中成为废品。LVS则用 来保证版图设计与其电路设计的匹配,保证它们的一致性。 21 如果不一致,就需要修改版图设计。SI用来分析和调整芯 片设计的一致性,避免串扰噪声、串扰延迟以及电迁移等 问题。
目前主要的物理验证工具有Mentor公司的Calibre、 Cadence公司的Dracula和Diva以及Synopsys公司的Hercules。 此外,各大厂商也推出了针对信号完整性分析的工具。
verilog hdl 习题答案
verilog hdl 习题答案Verilog HDL 习题答案Verilog HDL(硬件描述语言)是一种用于描述数字电路的硬件描述语言,它被广泛应用于数字系统的设计和验证。
在学习Verilog HDL的过程中,练习题是非常重要的,通过解答习题可以加深对Verilog HDL语言的理解,并提高设计和编程的能力。
下面我们将为您提供一些Verilog HDL习题的答案,希望能够帮助您更好地掌握这门语言。
1. 请编写一个Verilog HDL模块,实现一个4位全加器。
module full_adder(input wire a, b, cin,output wire sum, cout);assign sum = a ^ b ^ cin;assign cout = (a & b) | (b & cin) | (a & cin);endmodule2. 请编写一个Verilog HDL模块,实现一个4位加法器。
module adder_4bit(input wire [3:0] a, b,output wire [3:0] sum);wire c0, c1, c2;full_adder fa0(a[0], b[0], 1'b0, sum[0], c0);full_adder fa1(a[1], b[1], c0, sum[1], c1);full_adder fa2(a[2], b[2], c1, sum[2], c2);full_adder fa3(a[3], b[3], c2, sum[3], );endmodule3. 请编写一个Verilog HDL模块,实现一个4位移位寄存器。
module shift_register(input wire clk, rst, shift,input wire [3:0] in,output wire [3:0] out);reg [3:0] reg_data;always @(posedge clk or posedge rst) beginif(rst)reg_data <= 4'b0;else if(shift)reg_data <= {reg_data[2:0], in[0]};elsereg_data <= in;endassign out = reg_data;endmodule以上是一些常见的Verilog HDL习题的答案,通过这些习题的练习,相信您对Verilog HDL语言的掌握会更加深入。
Verilog HDL数字集成电路设计原理与应用(第二版)(蔡觉平) (4)
本章通过数字电路中基本逻辑电路的Verilog HDL程序设计 进行讲述,要求读者掌握基本逻辑电路的可综合性设计,为 具有特定功能的复杂电路的设计打下基础。
组合电路的设计需要从以下几个方面考虑:首先,所 用的逻辑器件数目最少,器件的种类最少,且器件之间的连 线最简单,这样的电路称为“最小化”电路。其次,为了满 足速度要求,应使级数尽量少,以减少门电路的延迟;电路 的功耗应尽可能地小,工作时稳定可靠。
组合逻辑电路的描述方式有四种:真值表、逻辑代数、 结构描述、抽象描述。采用Verilog HDL进行组合逻辑电路 设计主要采用的就是这几种方式。下面结合具体的实例简单 介绍达四种描述方式。 20
6
例4.1-1 用Verilog HDL语言设计模256(8 bit)计数 器。
(a) 可综合程序描述方式: module counter (count,clk,reset); output count; input clk,reset; reg [7:0] count; reg out; always @(posedge clk) 7
wire [1:0] sum; reg OUT; assign sum=A+B+C; always @(sum)
if (sum>1) else
endmodule
OUT=1; OUT=0;
32
可以看到,以上4种Verilog HDL描述方式都可以对表决 电路进行设计。这里应该指出的是,Verilog HDL程序是对 逻辑电路功能的描述性设计,并非最终得到的电路。EDA综 合工具可以将Verilog HDL程序综合成物理电路形式,通过 电路优化,从而得到符合设计要求的最简化电路。采用 Synplify软件对上面4种方法中任一种方法设计的Verilog HDL程序进行综合(采用Altera公司的Stratix Ⅱ器件),可 以得到相同的最简化电路,如图4.2-4所示。
实验二硬件描述语言(VerilogHDL)软件基本使用方法综述
编译通过后系统信息窗口:报告相关的使用芯片类型、使用的逻辑元素个数 等信息
⑷建立波形文件,设置相关端口信号,同实验一基本相同,设置之后保存波形文 件,重新进行编译。
⑸点击时序仿真按钮,进行仿真,观察结果可知完全符合数字选择电路功能。 这种通过Verilog HDL编程实现的功能与电路设计完成的功能完全相同。
⑷Verilog模块的结构特点 • Verilog程序是由若干模块构成的。每个模块的内容 都嵌在module和endmodule两个关键字之间;每个 模块实现特定的逻辑功能。 • 每个模块首先要进行端口定义,并说明输入和输出 口(input、output或inout),然后对模块的功能 进行定义。 • Verilog程序书写格式自由,一行可以写几个语句, 一个语句也可以分多行写,。 • 除了endmodule等少数语句外,每个语句的最后必 须有分号。 • 可用 /*……*/ 和 //……对Verilog程序作注释。 • Verilog程序书写区分大小写,关键字必须小写。
更多控制端口设置
lpm_counter计数器功能仿真波形
模24方向可控计数器电路
⑸Verilog 模块的模板
•module <顶层模块名> (<输入输出端口列表>); •output 输出端口列表; //输出端口声明 •input 输入端口列表; //输入端口声明 •/*定义数据,信号的类型,函数声明*/ •reg 信号名; •//逻辑功能定义 •assign <结果信号名>=<表达式>; //使用assign语句定义逻辑功能 •//用always块描述逻辑功能 •always @ (<敏感信号表达式>) • begin • //过程赋值 • //if-else,case语句 • //while,repeat,for循环语句 • //task,function调用 • end •//调用其它模块 • <调用模块名module_name > <例化模块名> (<端口列表port_list >); •//门元件例化 • 门元件关键字 <例化门元件名> (<端口列表port_list>); •endmodule
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Verilog HDL数字集成电路设计原理与应用》上机作业******* 班级:******* 学号:*******姓名:verilog HDL描述与仿真。
题目1:数字集成电路的设计和仿真软件;(1)学习使用Modelsim要求:中的例子;2)练习教材7.2.1 ((3)掌握设计代码和测试代码的编写;(4)掌握测试仿真流程;Modelsim软件的波形验证方式。
(5)掌握解答:语句块的区别,并写出下面信号语句块和begin-endfork-join:题目2 简述对应的程序代码AB500ns40201030解答:(1)begin-end语句块和fork-join语句块的区别:1、执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行;2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间;3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间;4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join 语句块为执行时间最长的那条语句执行结束的时间;5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。
fork-join语句块为电路上电后,各电路模块同时开始工作的过程。
(2)程序代码:Begin-end语句:module initial_tb1;reg A,B;initialbeginA=0;B=1;#10 A=1;B=0;#10 B=1;#10 A=0;#10 B=0;#10 A=1;B=1;endendmoduleFrk-join语句:module wave_tb2;reg A,B;parameter T=10;initialforkA=0;B=1;#T A=1;B=0;#(2*T) B=1;#(3*T) A=0;#(4*T) B=0;#(5*T) A=1;B=1;joinendmodule3. 分别用阻塞和非阻塞赋值语句描述如下图所示移位寄存器的电路图。
题目out2out1out0dinout3QQDDQQD clk解答:)阻塞赋值语句(1module block2(din,clk,out0,out1,out2,out3);input din,clk; output out0,out1,out2,out3;reg out0,out1,out2,out3;always@(posedge clk)beginout0=din; out1=out0;out2=out1; out3=out2;end endmodule)非阻塞赋值语句(2module non_block1 (din,clk,out0,out1,out2,out3);input din,clk; output out0,out1,out2,out3;reg out0,out1,out2,out3;always@(posedge clk) begin out0<=din;out1<=out0;out2<=out1;out3<=out2;endendmodule位同步计数器:设计题目416位同步计数器结构和电路特点;1)分析16要求:()用硬件描述语言进行设计;(2)编写测试仿真并进行仿真。
(3解答:)电路特点:同步计数器的时间信号是同步的;每当到达最高计数后就会重新计数。
(1)程序代码:(2module comp_16 (count, clk, rst );output [15:0] count;input clk,rst; reg [15:0] count;always @ (posedge clk) if (rst) count<=16'b0000000000000000; else if (count==16'b1111111111111111) count<=16'b0000000000000000;else count<=count+1;endmodule)仿真代码:(3module comp_16_tb;wire [15:0] count;reg clk,rst;comp_16 U1 (count, clk, rst );always #1 clk=~clk;initial begin clk=0;rst=0;#1 rst=1; #10 rst=0;#10 rst=1;#10 rst=0;#99999 $finish;end endmodule题目5. 试用Verilog HDL门级描述方式描述如下图所示的电路。
D3T3D2T2ZD T D TSS1解答:module zy(D0,D1,D2,D3,S1,S2,T0,T1,T2,T3,Z);output Z;input D0,D1,D2,D3,S1,S2;wire T0,T1,T2,T3,wire1,wire2;not U1(wire1,S1),U2(wire2,S2);and U3(T0,D0,wire2,wire1),U4(T1,D1,S1,wire1),U5(T2,D2,S1,wire2),U6(T3,D3,S1,S2);or U7(Z,T0,T1,T2,T3,);endmodule题目6. 试用查找真值表的方式实现真值表中的加法器,写出Verilog HDL代码:Cin ain bin sum Cout000000001100101110100101000111解答:module homework6(SUM,COUT,A,B,CIN);output SUM,COUT;input A,B,CIN;reg SUM,COUT;always@(A or B or CIN)case({A,B,CIN}) 3'b000:SUM<=0; 3'b000:COUT<=0; 3'b001:SUM<=1; 3'b001:COUT<=0; 3'b010:SUM<=1; 3'b010:COUT<=0;3'b011:SUM<=0; 3'b011:COUT<=1; 3'b100:SUM<=1; 3'b100:COUT<=0;3'b101:SUM<=0; 3'b101:COUT<=1; 3'b110:SUM<=0; 3'b110:COUT<=1;3'b111:SUM<=1; 3'b111: COUT<=1; endcase endmodule位同步加法器和乘法器7题目:设计1616位同步加法器和乘法器结构和电路特点;)分析要求:(1)用硬件描述语言进行设计;(2)编写测试仿真并进行仿真。
( 3解答:(1)16位同步加法器和乘法器结构和电路特点:加法器的进位只用考虑一位,但是乘法器的进位要考虑到32位才行。
(2)程序代码:16位同步加法器:module adder(a,b,c,sum,cout);output [15:0]sum;output cout;input [15:0]a,b;input c;assign {cout,sum}=a+b+c;endmodule16位同步乘法器:module multiplier(a,b,mul);input [15:0]a,b;output [31:0]mul;assign mul=a*b;endmodule(3)仿真代码:16位同步加法器:module adder_tb;reg [15:0]a,b;reg c;wire [15:0]sum;wire cout;initialbegina=8;b=8;c=1;endinitialbegin#10 a=16'b1111111111111111;#10 b=1;endadder U2(.a (a),.b (b),.c(c),.cout(cout),.sum(sum));endmodule16位同步乘法器:module multiplier_tb;reg [15:0]a,b;wire [31:0]mul;initialbegina=3;b=8;end initialbegin#10 a=100; #15 b=100;end multiplier U1(.a(a),.b(b),.mul(mul));endmodule仿真截图:加法器:乘法器:描述。
在图中,状态机的输入只与状态的跳转HDL8. 题目将下面的状态转移图用Verilog 有关,与状态机的输出无关,因此该状态机为摩尔型状态机。
下面为三段式描述方式。
start=0clr=1State0out=001step3=1start=1step3=0State3State1step2=0out=111out=010step2=1State2out=100解答:程序代码:module homework8(clk,out,step,clr);output [2:0]out;input step,clk,clr;reg [2:0]out;reg [1:0]state,next_state;always @(posedge clk)state<=next_state;always @(state or clr)if(clr)next_state<=0;elsecase(state)2'b00:case(step)1'b0:begin next_state<=2'b00;out<=3'b001;end1'b1:begin next_state<=2'b01;out<=3'b001;endendcase2'b01:beginout<=3'b010;next_state<=2'b10;end2'b10:case(step)1'b0:begin next_state<=2'b00;out<=3'b100;end1'b1:begin next_state<=2'b11;out<=3'b100;endendcase2'b11:case(step)1'b0:begin next_state<=2'b11;out<=3'b111;end1'b1:begin next_state<=2'b00;out<=3'b111;endendcaseendcaseendmodule仿真代码:module homework8_tb;reg clk,step,clr;wire [3:0]out;always#5 clk=~clk; initial begin clk=0; clr=1;step=1;end initial begin#5clr=0; #10 step=0; #10step=1;end homework8 U1(clk,out,step,clr);endmodule 仿真截图:Verilog HDL程序设计该电路。