edaverilog语言

上传人:san****019 文档编号:70866150 上传时间:2019-01-18 格式:PPT 页数:81 大小:3.61MB
返回 下载 相关 举报
edaverilog语言_第1页
第1页 / 共81页
edaverilog语言_第2页
第2页 / 共81页
edaverilog语言_第3页
第3页 / 共81页
edaverilog语言_第4页
第4页 / 共81页
edaverilog语言_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《edaverilog语言》由会员分享,可在线阅读,更多相关《edaverilog语言(81页珍藏版)》请在金锄头文库上搜索。

1、sl,1) Net(网络连线):由模块或门驱动的连线。 驱动端信号的改变会立刻 传递到输出的连线上。 例如:右图上,selb的改 变,会自动地立刻影响或 门的输出。,nets,a,b,selb,sela,nsl,out,如果不明确地说明连接是何种类型,应该是指 wire 类型。,Verilog语言,2) 寄存器(reg)类型 数据储存单元的抽象。 默认初始值为X 常用行为语句结构来给寄存器类型的变量赋值。用来表示always块内的指定信号,a,b,sl,selb,nsl,out,reg_a,reg_sel,reg_b,常为寄存器或触发器的输出,Verilog语言,(在always块内被赋值的每

2、个信号都必须定义成reg型),sela,格式: regn-1:0 数据名1,数据名2,数据名i; 或 regn:1 数据名1,数据名2,数据名i; 例: reg rega; reg3:0 regb,regc; 可以赋正值也可以赋负值,但当一个reg型数据是一个表达式 中的操作数时,它的值被当作无符号值,即正值。 如regb被赋值为-1,在表达式中被认为是?,Verilog语言,例:寄存器的声明和使用 reg reset; initial begin reset=1b1; #100 reset=1b0; end,reg signed 63:0 m; integer i;,Verilog语言,3)

3、 整数、实数和时间寄存器类型 integer(通用寄存器数据类型,用于对数量进行操作) 例: integer counter;/一般用途,做为计数器 inital counter=-1; real 实常量和实寄存器数据类型使用,默认值为0 例:real delta; initial begin delta=4e10; delta=2.13; end integer i; initial i=delta; /i的值为2,Verilog语言,time 保存仿真时间,通过系统函数$time可以得到当前的仿真时间,例:time sve_sim_time; initial save_sim_time=$

4、time;,4) 向量,线网和寄存器类型的数据均可声明为向量(位宽大于1)。若没有指定位 宽,则默认为标量(1位)。,例:wire a; wire 7:0 bus; wire 31:0 busA,busB,busC; reg clock; reg 0:40 virtual_addr;/最高有效位为第0位,Verilog语言,向量域选择 对上例中向量,可以指定它的某一位或若干个相邻位,busA 7 bus 2:0 /不可以写成bus0:2,高位应写在范围说明的左侧 virtual_addr 0:1,可变的向量域选择,+:width 从起始位开始递增,位宽为width -:width 从起始位开始

5、递减,位宽为width,Verilog语言,Verilog语言,reg255:0 data1; reg0:255 data2; reg7:0 byte; byte=data1 31-:8;从第31位算起,宽度为8位,相当于data131:24 byte=data1 24+:8; byte=data2 31-:8;从第31位算起,宽度为8位,相当于data124:31 byte=data2 24+:8; /起始位可以是变量,但宽度必须为常数 for (j=0;j=31;j=j+1) byte=data1(j*8)+:8; data1 (byteNum*8)+:8=8b0;,5) 数组,Veril

6、og中允许声明reg,integer,time,real,realtime及其向量类型的数组,对数组的维数没有限制,线网数组也可用于连接实例的端口,integer count 0:7; reg bool31:0; time chk_point 1:100;/由100个时间检查变量组成的数组 reg 4:0 port_id 0:7;/由8个端口标识变量组成的数组,端口变量的位 宽为5 integer matrix 4:00:255;/二维的整数型数组 reg 63:0 array_4d 15:07:07:0255:0;/四维64位寄存器型数组 wire 7:0 w_array17:05:0;/声

7、明8位线型变量的二维数组,Verilog语言,count5=0; chk_point100=0; port_id3=0; matrix 10=33559; /第1行第0列的整数型单元置为33559 array_4d000015:0=0; /把四维数组中索引号为0000的寄存 器型单元的015位置为0 port_id=0; /非法 matrix1=0; /非法,Verilog语言,6) memory类型 通过扩展reg型数据的地址范围生成格式: regn-1:0 存储器名m-1:0; 或者 regn-1:0 存储器名m:1; 例: reg7:0 memea255:0;,必须为常数表达式,Para

8、meter wordsize=16, memsize=256 ; regwordsize-1:0 memmemsize-1:0, wreitereg, readreg;,Verilog语言,注意: regn-1:0 rega; reg meman-1:0; rega=0; 等于 mema=0; ? mema3=0;正确?,Verilog语言,7) 参数,使用关键字parameter在模块内定义常数,不能像变量那样赋值,但每个模块实例的参数值可以在编译阶段被重载(defparam),parameter cache_line_width=256;/定义高速缓冲器宽度 parameter signe

9、d 15:0 WIDTH;/把参数WIDTH规定为有正负号, 宽度为16位,局部参数使用localparam定义,值不能改变,不能通过参数重载或有序参数列表或命名参数赋值来直接修改 例:状态机的状态编码 loacalparam state1=4b0001, state2=4b0010, state3=4b0100, state4=4b1000;,Verilog语言,参数值的改写(方法之一) 举例说明: module mod ( out, ina, inb); parameter cycle = 8, real_constant=2.039, file = “/user1/jmdong/desi

10、gn/mem_file.dat”; endmodule module test; mod mk(out,ina,inb); defparam mk.cycle=6, mk.file=“/my_mem.dat”; endmodule,Verilog语言,参数值的改写(方法之二) 举例说明: module mod ( out, ina, inb); parameter cycle = 8, real_constant=2.039, file = “/user1/jmdong/design/mem_file.dat”; endmodule module test; mod # (5, 3.20, “

11、/my_mem.dat”) mk(out,ina,inb); endmodule,Verilog语言,模块DUT的边界,输入口,输出口,输出/入口,net,net/register,net/register,net,inout,Verilog语言,8) 端口,net,net,可以将端口看成是由相互连接的两个部分组成。,输入口(input) 对于模块内部,必须为线网类型;从模块外部看,可以为线网或reg型 输出口 (output) 从模块内部看,可以是线网或reg型;从外部看,必须为线网类型 输入/输出口(inout) 从模块内部看,必须为线网类型;从外部看,也必须为线网类型,对模块调用时,Ve

12、rilog允许端口的内、外具有不同的位宽,但Verilog仿真器会对此警告 Verilog允许模块实例的端口保持未连接状态,如调试端口 例:fulladd4 fa0 (SUM, ,A,B,C_IN);,Verilog语言,端口与外部信号的连接,定义端口列表中的sum,c_out,a,b,c_in具有完全一致的顺序,Verilog语言,非顺序端口连接,Verilog语言,m1(SR_latch),激励(根层),n1(nand),n2(nand),Q, Qbar, S,R,q, qbar, set,reset,Verilog语言,8) 层次命名,stimulus stimulus.qbar sti

13、mulus.q stimulus.reset stimulus.set stimulus.m1.Q stimulus.m1 stimulus.m1.S stimulus.m1.Qbar stimulus.n1 stimulus.m1.R,Verilog语言,门级建模,1. 门级(低级抽象层次) 电路用逻辑门来描述 直观性 Verilog描述和电路逻辑图之间一一对应 Verilog语言通过提供预定义的逻辑门原语来支持用户使用 逻辑门设计电路, Verilog基本门单元(primitives) 大多数ASIC和FPGA元件库是用这些基本单元开发的。,门级建模,门级建模,门级建模, Verilog的

14、条件基本单元 这四种基本单元只能有三个引脚:output, input, enable,门级建模,门级建模,门级建模,门级建模,门实例语句格式 gate_typeinstance_name(term1,term2,.,termN); instance_name为可选项; gate_type为前面列出的某种门类型; 各term用于表示与门的输入/输出端口相连的线网或寄存器。 同一门类型的多个实例能够在一个结构形式中定义。语法如下: gate_type instance_name1(term11,term12,.,term1N), instance_name2(term21,term22,.,te

15、rm2N), . instance_nameM(termM1,termM2,.,termMN);,门级建模,门实例数组,门级建模, 多输入门(and,nand,nor, or,xor,xnor),多输入门实例语句的语法如下: multiple_input_gate_typeinstance_name(OutputA,Input1,Input2,.,InputN);,门级建模, 多输出门(buf,not),实例语句的基本语法如下: multiple_output_gate_typeinstance_name(Out1,Out2,.OutN,InputA);,门级建模,多路选择器,i0,i2,i1,i3,s1,s0,out,74253,门级建模,多路选择器门级描述,门级建模,多路选择器激励模块(略),门级建模, 门延迟,上升延迟:在门的输入发生变化的情况下,门的输出从0,X,Z 变化为1所需的时间,下降延迟:门的输出从1,X,Z 变化为0所需的时间,关断延迟

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号