第三讲_VERILOG语言(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014-6-11
Verilog HDL与 C语言
虽然Verilog的某些语法与C语言接近,但存在本 质上的区别 Verilog是一种硬件语言,最终是为了产生实际 的硬件电路或对硬件电路进行仿真 C语言是一种软件语言,是控制硬件来实现某 些功能 利用Verilog编程时,要时刻记得Verilog是硬 件语言,要时刻将Verilog与硬件电路对应起来 SystemC and SystemVerilog:面向SOC
2014-6-11
3.2.2 模块的实例化
例3-9 :通过调用半加器模块、或门模块来实现一位全加器。 1)电路板的元件装配与Verilog模块例化进行类比
2014-6-11
3.2.2 模块的实例化
如果采用第一种按模块端口顺序连接的方法例化 模块则全加器写成 (练习) module fulladder(a,b,co_in,co_out,s); ……. //调用半加器模块两次,例化名分别为u1,u2 halfadder u1(a,b, co_temp1, s_temp); halfadder u2(s_temp,co_in, co_temp2, s); //调用两输入与门,例化名为u3 and2 u3(co_temp1,co_temp2,co_out); endmodule
initial //产生信号a,b的波形 begin a<= 0; b<= 0; #10 begin a<= 1; b<=0; end end
2014-6-11
4 模块功能说明
用结构说明语句、“task”和“function”进行 行为级描述:
task writeburst;//定义一个任务writebrust input [7:0] wdata; „ endtask „ writeburst(123);//调用任务
2014-6-11
寄存器传输级
2014-6-11
门级
调用已设计好的逻辑门基本单元(原语), 如,与门,或门、异或门等,描述逻辑门 之间的连接,以实现逻辑功能。
Verilog HDL 在此层次上 描述底层单元之间的连接,可以更精确地描 述系统的行为。 在进行综合时使用特定工艺库完成RTL到门 级的映射。
2014-6-11
Verilog与VHDL
目前,设计者使用Verilog和VHDL的情况
美国:Verilog: 60%, VHDL: 40% 台湾:Verilog: 50%, VHDL: 50%
2014-6-11
Verilog 与 VHDL
两者的区别:
VHDL侧重于系统级描述,从而更多的为系统 级设计人员所采用 Verilog侧重于电路级描述,从而更多的为电路 级设计人员所采用
module halfadder(A,B,CO,S); input A,B; output S,CO; wire S,CO; assign S = A ^B; assign CO= A & B; endmodule 从中,看出Verilog HDL怎样 的结构特点?
程序位于关键字module和endmodule 之间 每个模块必须有一个模块名进行标识 模块有输入,输出端口说明,有模块功能 描述
Verilog HDL在此层次上,描述 系统中数据在不同模块之间的传输 必要的操作
2014-6-11
行为级或算法级
2014-6-11
寄存器传输级
通过描述模块内部状态转移的情况来表征 该逻辑单元的功能,设计者关注数据的处 理及其如何在线网上,寄存器间的传递。
Verilog HDL在此层次上: 描述系统中的数据流和功能模块之间和 内部的控制信号 按照定义的时钟周期建立模型
2014-6-11
4 模块功能说明
常有四类方法可以选用以完成模块逻辑功能的表述 1)用连续赋值语句“assign”进行数据流建模 assign a = b & c; 2)对已定义好的元件进行调用: halfadder u1(a,b,s,co);
2014-6-11
Biblioteka Baidu
4 模块功能说明
用结构说明语句“always”、“initial” 进行 行为级描述: always @ (posedge clk) begin Q <= d; end
2014-6-11
2. I/O端口声明
例: input[7:0] data_in; output S,CO; inout[15:0] data_1,data_2;
2014-6-11
3 数据类型说明
输出端口的信号,模块内部信号需要数据类型说明。 常用两类数据类型,线网类型(关键词:wire)寄存 器类型(关键词:reg )。 线网类型(net type),表示元件间的物理连线。它 的值由驱动元件的值决定。如果没有驱动元件连接 到线网,线网的缺省值为高阻值z。 寄存器类型(register type),表示一个抽象的数据 存储单元,它只能在always语句和initial语句中被 赋值。寄存器类型变量的缺省值为不确定值x。
第3章
Verilog硬件描述语言(一)
2014-6-11
为什么要采用硬件描述语言(HDL)
随着电子系统设计复杂性的提高,可利用
HDL在抽象层次对复杂系统进行有效的描述。
HDL描述结果易于通过EDA工具完成工艺无关的
设计,有利于保证设计正确性和对设计进行管理
便于对设计进行管理、归档和重用 易于对设计进行修改,以探索不同的设计可能性 便于提高设计的效率
2014-6-11
2. I/O端口声明
所有声明的端口都必须说明其端口类型、位宽等 信息 。 端口类型有三类 输入端口 格式:input [width-1:0] 端口名1„ ; 输出端口 格式:output [width-1:0] 端口名1,„; 输入/输出端口 格式:inout [width-1:0] 端口名1,„;
2001年公布了IEEE 1364-2001 Verilog标准,对IEEE 13641995 进行了修订
2014-6-11
3.1 硬件描述语言概述
VHDL:VHSIC(very high-speed IC)hardware description language,是由美国国防部为了解决项目的 多个承包人的信息交换困难和设计维修困难的问题而提出 的,由TI,IBM和INTERMETRICS公司完成。 1987年制定为IEEE标准,即:IEEE std 10761987[LRM87],1993后又进行一些修改,成为新的标准 版本。
2014-6-11
3.2.2 模块的实例化
如果没有co_in输入,则半加器u2的调用可 写为(采用第二种按模块端口名称连接):
练习: halfadder u2(.A(s_temp),.CO(co_temp2),.S(s)); 或:halfadder u2(.A(s_temp),.B(),.CO(co_temp2),.S(s));
2014-6-11
3.2.2 模块的实例化
子模块: module dff2(clk,d,q); input clk,d; output q; reg q; always @(posedge clk) q<=d; endmodule 顶层模块: module top(A,CLK,C,B); input A,CLK; output C,B; wire s1,s2; assign s2 = s1 & A; dff2 U1(CLK,A,s1); dff2 U2(CLK,s2,C); dff2 U3(CLK,s1,B); endmodule
2014-6-11
综合后电路
2014-6-11
3.3 Verilog HDL词法、数据类型和运算符
2014-6-11
3.1.2 层次化设计
系统任务 顶层模块 逐 层 分 解 第二层分解 模 块 1 模 块 2 模 块 3 第一层分解 „ 模块 N-1
模块A
模块B
模块N
模 块 1
模 块 2
„
2014-6-11
3.2 Verilog HDL描述的四个层次的电路模型 行为级或算法级 是Verilog HDL支持的最高抽象级别,侧 重关注算法的实现,不关心硬件电路的实 现。
2014-6-11
Verilog在VLSI设计过程中的位置
系统描述
数字电路设计 者用Verilog HDL来描述自 己的设计思想, 然后利用EDA 工具进行仿真, 综合,最终用 ASIC或FPGA 实现其功能
功能设计 X=(AB*CD)+(A+D)+(AD+C)
逻辑设计
电路设计
物理设计
设计验证
芯片制造
2014-6-11
硬件描述语言特点
功能的灵活性 支持从开关级,门级,RTL,行为级等不同抽 象层次对电路进行描述。 支持不同抽象层次描述的电路组合为一个电路 模型。 支持元件库、功能模块的可重用设计。 HDL支持高层次的设计抽象,适用于复杂数字电 路系统设计。 HDL设计可不依赖厂商和器件,可移植性好。
模块中的每一条语句都以分号(;)结束, 但endmodule后不加分号
2014-6-11
3.2.1 模块结构分析
模块(module)是Verilog HDL设计的基本 功能单元。模块可以是: 一个元件 多个低层次模块的组合
2014-6-11
3.2.1 模块结构分析
表3.2 Verilog HDL模块结构
每个Verilog HDL模块中 module、模块名和endmodule这三部分是 模块必须的, 其余的根据设计要求选用。
2014-6-11
3.2.2 模块的实例化
模块调用(也称模块实例化)基本格式为: <模块名> <例化名>(<端口列表 >);
2014-6-11
3.2.2 模块的实例化
2014-6-11
门级
2014-6-11
开关级
这是Verilog 语言支持的最低抽象层次,通过描 述器件中的晶体管,存储节点及其它们的互联来 设计模块 。
一般来说,设计的抽象程度越高,设计的灵活性就 越好,和工艺的无关性就越高,随着抽象程度降低, 设计的灵活性和工艺的无关性变差,可移植性变差。
function max(a,b)//定义一个函数max,求出a,b两数的最大值 „ endfunction //函数的调用,将data_1,data_2的最大值赋给c assign c = max(data_1,data_2);
2014-6-11
5. 模块结尾 在每个模块的末尾用endmodule结束,其后 不加分号。
2014-6-11
3.1 硬件描述语言概述
1985年,Gateway Design Automation公司为其仿真器产品开
发了Verilog语言。 1989年,Cadence收购Gateway公司,并继续推广Verilog语言 和仿真器。 1995年公布了IEEE 1364-1995 Verilog标准
根据对被调用的低层模块与上层模块的连接端口的描述 方式 ,有两种实例化方法 : (1)按端口顺序连接: 低层模块定义时声明的端口顺序 与上层模块相应的连接端口顺序保持一致。 格式:模块名 例化名(PORT_1,„,PORT_N); (2)按端口名称连接,被调用的低层模块和上层模块 是通过端口名称进行连接的。 格式:模块名 例化名 (.port_1(PORT_1),...,port_n(PORT_N));
2014-6-11
3.2.1 模块结构分析
例3-1:设计一个半加器 1)功能分析,真值表:
输入信号:
A、 B 是输入的 1bit数据
输出信号:
S:相加的和 CO= A & B S = A XOR B
2014-6-11
CO:向高位的进 位
3.2.1 模块结构分析
2)半加器的Verilog HDL描述
3.2.1 模块结构分析
2014-6-11
1、含端口名的模块声明
格式: module 模块名(端口1,端口2,„,端口n); 为便于工程管理,模块命名一般应和其功能相关 端口是模块和外界进行信息交互的接口 如果模块与外界无信息交互,则无端口列表,例如: module testbench(); 如有信息交互,注意在括号中罗列的各端口名用逗号隔 开