版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Verilog基础:
1.间隔符:空格(\b),Tab(\t),换行符(\n),换页符。
。2.注释:/**///
。3.标记符,关键词:标记符由英文字母、数字、$符、下划线组成,以英文字母或下划。
。线开头。
4.逻辑值:0:逻辑假1:逻辑真。x或X:不拟定状态。z或Z:高阻态
5.常量:<1>格式:<+/-><位宽>,<基数符号><数值>
b/o/d/h:二、八、十、十六进制
<2>数字可加下划线8b1001_1001表达8位二进制数10011001
<3>科学计数:5E-4:5*10A4
<4>运用参数定义语句来定义一个标记符表达常量:parameter参数名1=
常量1,参数名2=常量2;
例:parameterBIT=1,BYTE=8;
6.字符串:双撇号内的字符序列,不能分多行书写,表达式或赋值语句中字符串要换
成。无符号整数,用8位ASCII码表达,一个8位ASCII码表达一个字
符
变量的数据类型:
1.线网(nettype)类型:线网类被定义后若没有被元件驱动,则默认值为高阻态
关键词:wire:wire[n—1:0]变量名1,变量名2,…,变量
名n;
除wire外尚有wand、wor、tri、triand,trior、trire
g
2.寄存器类型:
寄存器型变量只能在initial或always内被赋值,没被赋值默认为x状态。
4种类型的寄存器变量:<l>reg:行为描述中对寄存器型变量说明
<2>integer:32位有符号整数型
<3>real:64位有符号实型变量(默认值是0)
<4>time:64位无符号时间型
@reg:格式:reg[n・l:0]变量名1,变量名n;
例:integercounter;
initial//initial是过程语句结构,赋值给寄存器类型变量
counter=-l;
③rea1:通常用于对实数型常量进行储存运算
例:realde1ta;
initia1
begin
de1ta=4elO;
delta=2.13
end
integeri;
initiali=deIta;//i得到的值为2
©time:重要用于储存仿真时间,只储存无符号整数,常调用系统函数$lime
例:timecurrent_time;
initial
current_time=$time;
Veri1og基本结构
modu1e模块名(端口名1,端口名2,…)
端口类型说明(input,output,inout)//inout是双向端口
参数定义;〃将常量用符号常量代替,非必须结构
数据类型定义(wire,reg等)
实例化底层模块和基本门级元件;
连续赋值语句(assign);
过程块结构(initia1和always);
行为描述语句;
endmodu1e
描述方式:①结构描述方式:调用其他已定义好的底层模块对整个电路进行描述,或直。
接调用基本门级元件描述。
②数据流描述方式:使用连续赋值语句对电路逻辑功能进行描述。
③行为描述方式:使用过程块语句结构(iniiia1,always)»
组合逻辑电路门级建模
基本门级元件:and:多输入与门or:多输入或门xor:多输入异或门
buf:多输出缓冲器bufifl:高电平有效三态缓冲器
bufifO:低电平有效三态缓冲器
nand:多输入与门nor:多输入或非门xnor:多输入异或非门
not:多输入反相器notifl:高电平有效三态反相器
notifO:低电平有效三态反相器
①多输入门:andA1(out,in1,in2,in3);
②多输出门:bufB1(outl,out2,•••,in);
③三态门:bufiflB1(out,in,ctri);
notif1N1(out,in,Ctrl);
组合逻辑电路数据流建模
数据流建模使用的基本语句是连续赋值语句,用于对wire型变量进行赋值,由关键词ass
ign开始,由操作数和运算符组成的逻辑表达式。
2选1数据选择器:wireA,B,SEL,L;
assignL=(A&〜SEL)|(B&SEL);
组合逻辑电路行为级建模
描述数字逻辑电路的功能和算法,使用always结构,后面跟一系列过程赋值语句,给r
eg类型变量赋值。
1.条件语句:if:①if(condition_expr)true_staternent;
②if(condition_expr)true_statement;
eIsefale_statement;
(3)if(condition__exprl)true_statement1;
elseif(condition_expr2)true-statement2;
elsedefau1t_statement;
注:if括号中的表达式若为0,z或x都按“假”解决,否则按“真”处。
理。
2.多支路分支语句:case:case(case_expr)
item_expr1:statement1;
item_expr2:statement2;
default:default_statement;〃可省略
endcase
注:若分支后的语句是多条语句,要在多余语句前加上begin,最后加上
oendo
3.always:a1ways@(循环执行条件)表达括号内的任意一个变量发生变化时,其下面
。的过程赋值语句就执行一次,执行完最后一句时,执行挂起,等待变量发生变
。化,圆括号内的变量被称为敏感变量。
注:①敏感变量互相之间用or连接②只能给寄存器变量赋值(reg型)。
用verilog描述锁存器和触发器
1.时序电路建模:always@(事件控制表达式/敏感事件表)
begin
块内局部变量的定义;
过程赋值语句;//左边的变量必须为寄存器数据类型,右边随意
end
敏感事件分两种类型:电平敏感,边沿触发
①电平敏感:aIways@(SELoraorb)
SEL,a,b中任意一个信号电平发生变化则后面的。
语句执行一次。
②边沿触发:posedge(上升沿)negedge(下降沿)
always@(posedgeCPorposedgeCR)
时钟信号CP上升沿到来或清零信号CR跳变为低
电平时,执行之后的语句。
always内部的赋值语句:阻塞型赋值语句(二号赋值),非阻塞型赋值语句(。号赋值)
①阻塞型赋值语句:按语句由上到下的顺序进行赋值,即有
先后顺序
②非阻塞型赋值语句:并行执行,所有语句同时执行赋值
注:一■个语句块(begin…end)中只允许使用一种类型的赋
。值方式,时序电路中采用非阻塞型赋值语句。
用verilog描述时序逻辑电路
1.移位寄存器的Verilog建模:左移:Q<={Dsl,Q[3:l]}
将左移输入端Dsi的数据直接传给输出Q[3],
Q[3]->Q[2],Q[2]->Q[1],Q[1]->Q[O](Q[3:H
传给Q[2;OJ)
右移:Q<={Q[3:0],Dsr};
moduleTest_shift74194(S1,SO,D,DsI,Dsr,Q,CP,CR);
inputS1,SO;
inputDshDsr;
inputCP,CR;
input[3:0]D;
output[3:0]Q;
regE3:0JQ;
aIways@(posedgeCPornegedgeCR)
if(〜CR)Q<=4^0000;
else
case({SI,SO})
21600:Q<=Q;
b01:Q<={Q[2:0],Dsr};
2fb10:Q<={Dsl,Q[3:l]};
b11:Q<=D;
endcase
endmodu1e
2,计数器的Verilog建模:
a)同步二进制计数器:
modulecounter(CEP,CET,PE,D,CP,CR,Q,TC);
inputCEP,CET,PE,CP,CR;
input[3:0]D;
outputTC;
output[3:0]Q;
reg[3:0JQ;
wireCE;
assignCE=CEP&CET;
assignTC=CET&(Q==4'bl111);
always@(posedgeCPornegedgeCR)
if(~CR)Q<=4'b0000;
elseif(~PE)Q<=D;
elseif(-CE)Q<=Q;
eIseQ<=Q+l'b1;
endmodule
)ps20.040.0ns60』ns80.0ns100.0ns1200ns140.0ns160.0ns
ValuenS
Name
15.0315.025its
J_
CP_Aj__n匚L_TLnLTT^_^Ln_TLT1LT
91CEPA
D^2CETA
心3CRA—i__r~
■
后4SDA[•I[0]
•9PEA
各10aQA[:]::[2]X(3]X(4]X(5]X(6]X门]X[8]x[£]XioX[o]XCdXC2]X[3]X[4]X[5]
"15TCAI
b)异步二进制计数器:
moduleripplecounter(Q0,Q1,Q2,Q3,CP,CR);
outputQ0,Q1,Q2,Q3;
inputCP,CR;
D_FFFF0(QO,〜QO,CP,〜CR);
D_FFFF1(Q1,~Q1,Q0,〜CR);
D_FFFF2(Q2,~Q2,Q1,~CR);
D_FFFF3(Q3,〜Q3,Q2,〜CR);
endmodule
moduleD_FF(Q,D,CP,Rd);
outputQ;
inputD,CP,Rd;
regQ;
always@(negedgeCPornegedgeRd)
if(〜Rd)Qv=「bO;
elseQ<=D;
endmodule
c)非二进制计数器:
modu1em10_counter(CE,CP,CR,Q);
inputCE,CP,CR;
output[3:0]Q;
reg[3:0]Q;
a1ways@(posedgeCPornegedgeCR)
if(-CR)Q<=4,b0000;
eIseif(CE)
beginif(Q>=4'b1001)Q<=4fb0000:
e1seQ<=Q+l'b1;
end
elseQ<=Q;
endmodu1e
所有实验代码及电路波形:
十进制可逆计数器实验:
代码一(可逆计数器):
modulekenijishuqi(set,cin,cIk,cIr,upd,q,co);
inputclk,c1r,upd,set;
input[3:0]cin;
outputregco;
outputreg[3:0]q;
always@(posedgeclkornegedgeclr)
begin
if(!clr)
if(!set)//clear0
begin
q=cin;
end
else
begin
q=0;co=0;
end
else
begin
if(upd)//addcounter
begin
if(q==4*d8)co=1'b1;//whenq=1000b,co=1
elseco=0;//elseco=0
if(q<4'd9)q=q+1*b1;//whenq<=1000b,
elseq=0;//q=1001nextq=0000
end
else//decrese
begin
if(q==l)co=l1bl;
elseco=0;
if(q>0)q=q-l'bl;
elseq=4'd9;
end
end
end
endmodule
代码二(BCD码.七段译码器):
moduledecode4_7(codeout,indec);
inputL3:01indec;
output[6:0]codeout;
reg[6:0]codeout;
always@(indec)
begin
case(indec)
4*d0:codeout=7'b1111110;
4'd1:codeout=7zb0110000;
4'd2:codeout=7'bl101101;
4'd3:codeout=7,bl111001;
41d4:codeout=7'bO110011;
4'd5:codeout=7rb1011
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版智能门窗安全性能检测与认证合同3篇
- 二零二五版健身俱乐部健身用品定制与销售合同2篇
- 2025版美术教师教育公益活动聘用合同协议4篇
- 二零二五年度医疗健康领域投资借款合同大全4篇
- 二零二五版摩托车售后服务网点建设与运营合同4篇
- 2025年度智能化中央空调系统安装及维护服务合同协议4篇
- 2025年度可再生能源暖气供应合同范本4篇
- 2025版腻子乳胶漆施工与色彩设计合同范本3篇
- 2025版高端住宅内墙艺术涂料施工合同范本4篇
- 2025年高校教授学术团队建设与管理合同4篇
- 《Python编程基础与应用》面向对象编程
- 高考满分作文常见结构完全解读
- 理光投影机pj k360功能介绍
- 六年级数学上册100道口算题(全册完整版)
- 八年级数学下册《第十九章 一次函数》单元检测卷带答案-人教版
- 帕萨特B5维修手册及帕萨特B5全车电路图
- 系统解剖学考试重点笔记
- 小学五年级解方程应用题6
- 云南省地图含市县地图矢量分层地图行政区划市县概况ppt模板
- 年月江西省南昌市某综合楼工程造价指标及
- 作物栽培学课件棉花
评论
0/150
提交评论