ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:20.45KB ,
资源ID:16413687      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16413687.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Verylog学习笔记Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Verylog学习笔记Word文档格式.docx

1、2、用实例元件,如同调入库元件一样and and_inst(q,a,b);3、用“always”块always (posedge clk or posedge clr) /always块生成了一个带有异步清除端的D触发器。 begin if(clr) q=0; else if(en) q=d; end采用assign语句是最常用的方法之一。“always”块可以用于产生各种逻辑,常用于描述时序逻辑。Verilog HDL中总共有19种数据类型4 个最基本的数据类型:integer型、parameter型、reg型和wire型。其他的类型有large型、medium型、scalared型、 ti

2、me型、small型、tri型、trio型、tril型、triand型、trior型、trireg型、vectored型、wand型和wor 型,以后会有介绍。一、数字整数有二、八、十、十六进制位宽进制数字,这是一种全面的描述方式缺省的位宽由具体的机器系统决定,至少是32位缺省的进制为十进制x表示不定值,z代表高阻值,z还可以用?代替4b10x0 /位宽为4的二进制数从低位数起第二位为不定值b101z /位宽为4的二进制数从低位数起第一位为高阻值12dz /位宽为12的十进制数,其值为高阻值d? /同上8h4x /位宽为8的十六进制数,其低4位值为不定值要表示负数的话只需在位宽表达式前加一个减

3、号4、下划线(underscore_)可以用在数字之间提高数字的可读性如16b1010_1011_1111_1010二、参数(parameter)型即用parameter来定义一个标识符代表一个常量,称为符号常量,类似于const和define pi一样。网络数据类型表示结构实体(例如门)之间的物理连接,不能储存值,而且必须收到驱动器的驱动,如果没有驱动则该变量就是高阻的,值为z,常用的网络数据类型包括wire和tri型,wire型变量通常是用来表示单个门驱动或连续赋值语句驱动的网络型数据,tri型变量则用来表示多驱动器驱动的网络型数据wire7:0 b;/定义了一个8位的wire型数据reg

4、型寄存器是数据存储单元的抽象,缺省初始值为不定值xmemory型Verilog HDL通过对reg型变量建立数组来对存储器建模,可以描述RAM,ROM和reg文件。如reg7:0 mema255:0;定义了一个名为mema的存储器,有256个8位的寄存器,地址范围从0到255。如果想对memory中的存储单元进行读写操作。必须指定该单元在存储器中的地址。2.3 运算符及表达式(1)算数运算符(+,-,*,/,);为模运算,求余运算符(2)赋值运算符(,,=,=);(4)逻辑运算符(&,|,!);逻辑与,逻辑或,逻辑非(5)条件运算符(?:r=s?t:u;如果s为真,则rt,否则ru(6)位运算

5、符(,|,&,);取反,|位或,按位异或,&按位与,按位同或(异或非)(7)移位运算符(右移);an,n代表移几位,都用0来填补移出的空位(8)拼接运算符();把多个信号的某些位拼接起来(9)其他。单目运算缩减运算,如&b,是将b的每一位相与得出一位的结果赋值语句和块语句信号有两种赋值方式1、非阻塞(non_blocking)赋值方式(如bend_wave;end用顺序块和延时控制组合来产生一个时序波形并行块是语句同时执行的在并行块和顺序块中都有一个起始时间和结束时间的概念。对于顺序块,起始时间就是第一条语句开始被执行的时间,结束时间就是最后一条语句执行结束的时间。而对于并行块来说,起始时间对

6、于块内所有的语句是相同的,即程序植程控制进入该块的时间,其结束时间是按时间排序在最后的语句执行结束的时间。if_else语句case_endcase 语句(1)case(表达式) endcase(2)casez(表达式)(3)casex(表达式)Verilog HDL 针对电路的持性提供了case语句的其他两种形式,用来处理caee语句比较过程中的不必考虑的情况(dont care condition)。其中,casez语句用来处理不考虑高阻值z的比较过程,casex语句则将高阻值z和不定值x都视为不必关心的情况。所谓不必关心的情况,即在表达式进行比较时,不将该位的状态考虑在内。这样,在cas

7、e语句表达式进行比较时,就可以灵活地设置以对信号的某些位进行比较。见下面的两个例子。2.6 循环语句有4种类型的循环语句(1)forever连续执行的语句,常用于产生周期性的波形,作为仿真测试信号。(2)repeat连续执行一条语句n次(3)while执行一条语句直到某个条件不满足(4)for循环语句,和C/C+中的循环语句类似2.7 结构说明语句(1)initial;和always在仿真一开始即开始执行,initial语句只执行一次(2)always;而always语句则不断重复执行(3)task;和function语句可以在程序模块的一处或多处调用(4)function;always #h

8、alf_period areg=areg;/这条语句生成了一个周期为2*half_period的无限延续的信号波形。0 counterreg tick;always (posedge areg)tick=tick;counter=counter+1;这种时间控制是always语句最常用的2.7.3 task和function说明语句 task 和function说明语句分别用来定义任务和函数。利用任务和函数可以把一个很大的程序模块分解成许多较小的任务和函数,便于理解和调试。输入、输出和总线信号的值可以传入、传出任务和函数。任务和函数往往还是大的程序模块中在不同地点多次用到的相同的程序段。学会使

9、用task和function语句可以简化程序的结构,使程序简明易懂,是编写较大型模块的基本功。一、task和function说明语句的不同点任务和函数有些不同,主要表现为以下4点:(1)函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。(2)函数不能启动任务,而任务能启动其他任务和函数。(3)函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。(4)函数返回一个值,而任务则不返回值例:这个例子描述了一个简单的交通灯的时序控制,并且该交通灯有它自己的时钟产生器。module traffic_lights;reg clock,red,amber,green;pa

10、rameter on=1,off=0,red_tics=350,amber_tics=30, green_tics=200;/initializationinitial red=off;initial amber=off;initial green=off;/clk controlalwaysred=on; /red light onlight(red,red_tics); /transfer hold missiongreen=on; /green light onlight(green,green_tics); /wait for 200 time unitamber=on; /yello

11、w light onlight(amber,amber_tics); /wait for 30 time unit/define traffic light on missiontask light(color,tics);output color;input31:0 tics;repeat(tics)(posedge clock);/use repeat sentence to wait for posedge clockcolor=off; /turn off the lightend task/generate clock#100 clock=0;#100 clock=1;end mod

12、ule三、function说明语句函数的目的是返回一个用于表达式的值例子 定义了一个叫factorial的函数,返回一个32位的寄存器类型的值,可后向调用自身,并打印出部分结果值。module tryfact;/function definefunction31:0 factorial; /定义函数名input3:0 operand; /端口说明reg3:0 index;factorial=operand? /语句.for(index=2;index=operand;index=index+1)factorial=index*factorial;endfunction/function tes

13、treg31:0 result;0 n;initialresult=1;for(n=2;n=9;n=n+1)display(partial result n=%d result=%d,n,result);result=n*factorial(n)/(n*2)+1);finalresult=%d,result);2.8 系统函数和任务Verilog HDL语言中共有以下一些系统函数和任务:bitstoreal, rtoi,display,setup,finish,skew,hold,setuphold,itor,strobe, period,time,printtimescale,timefoe

14、mat,realtime,width,real tobits, write,recovery.2.8.1 display和write任务格式:display(p1,p2,pn);write(p1,p2,pn);用来输出信息,将参数p2pn按参数p1给定的格式输出。d=%0h a=%0h,data,addr);这样显示输出数据的时候,经过格式转换以后总是以最少的位数来显示表达式的当前值。2.8.2 系统任务monitormonitor(p1,p2,pn);monitor;monitoron;monitoroff;具有监控和输出参数列表中的表达式或变量值的功能。使得每当参数列表中变量或表达式的值发

15、生变化时,整个参数列表中变量或表达式的值都将输出显示。在monitor中,参数可以是time系统函数,如下monitor(time,rxd=%b txd=%b,rxd,txd);在display中也可以这样使用。monitoron和monitoroff这两个任务的作用是通过打开和关闭监控标志来控制、监控任务monitor的启动和停止,这样使得程序员可以很容易的控制monitor何时发生。2.8.3 时间度量系统函数timetime和realtime,用这两个时间系统函数可以得到当前的仿真时刻。cpu5. 指令寄存器(INSTRUCTION REGISTER)module register(r,

16、clk,data,ena,rst);output7:input 7:0 data;input clk,ena,rst;wire load;and a1(load,clk,ena);DFF d7(r7,load,data7,rst);DFF d6(r6,load,data6,rst);DFF d5(r5,load,data5,rst);DFF d4(r4,load,data4,rst);DFF d3(r3,load,data3,rst);DFF d2(r2,load,data2,rst);DFF d1(r1,load,data1,rst);DFF d0(r0,load,data0,rst);6.

17、 状态控制器(STATE CONTROLLER)timescale 1ns/1nsmodule control(load_acc,mem_rd,mem_wr,inc_pc,load_pc,load_ir,halt,opcode,fetch,zero,clk,clk2,reset);output load_acc,mem_rd,mem_wr,inc_pc,load_ir,halt;reg load_acc,mem_rd,mem_wr,inc_pc,load_pc,load_ir,halt;0 opcode;input fetch,zero,clk,clk2,reset;define HLT 3b

18、000define SKZ 3b001define ADD 3b010define AND 3b011define XOR 3b100define LDA 3b101define STO 3b110define JMP 3b111always (posedge fetch)if(reset)ctl_cycle;always (negedge reset)disablectl_cycle;inc_pc,load_acc,load_pc,mem_wr,mem_rd,load_ir,halt=7b0000000;always (posedge reset)(posedge fetch) ctl_cy

19、cle;task ctl_cycle;/state0 -first address setup/state1 -instruction fetch(posedge clk)b0000100;/state2 -instructionload(negedge clk)b0000110;/state3 -idle/state4 -second address setupif(opcode=HLT)inc_pc,load_acc,load_pc,mem_wr,mem_rd,load_ir,halt)=7b1000001;elseb1000000;/state5 -operand fetchif(opcode=ADD|(opcode=AND)|(opcode=XOR)|(opcode=LDA)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1