版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10.6
D触发器//例10.6.1moduled_ff(q,d,clk); outputq;inputd,clk;regq; always@(posedgeclk) q=d; endmodule 1.Verilog语言描述2.
程序说明上升沿和下降沿检测语句功能表
From\to01XZ0noposedgeposedgeposedge1negedgeNonegedgenegedgeXnegedgeposedgenoNoZnegedgeposedgenoNo上升沿触发指变量值从0变为1、0变为x和z、或者从x,z变为1,用posedge表示。下降沿触发指变量值从1变为0、1变为x和z或者从x,z变为0,用negedge表示。3.仿真结果例10.6.1的仿真电路图:
例10.6.1的仿真波形图:
非阻塞赋值:
//例10.6.3moduled_ff(q1,q2,d,clk); outputq1,q2;inputd,clk;regq1,q2; always@(posedgeclk) begin q1<=d;q2<=q1;endendmodule 非阻塞过程赋值语句不会阻塞进程,直到整个块的操作执行完才一次完成赋值操作。用于几个寄存器需要同一时刻赋值的情况。q1n+1=dn,q2n+1=q1n=dn-1例10.6.2的仿真波形图:例10.6.3的仿真波形图:
10.7
计数器10.7.14位二进制加法计数器1.Verilog语言描述//例10.7.1modulecount4(out,reset,clk);output[3:0]out;inputreset,clk;reg[3:0]out;always@(posedgeclk)beginif(reset)out<=0;//同步清零elseout<=out+1;//计数endendmodule2.
程序说明这个计数器只有同步复位和计数功能。时钟的上升沿有效,当clk信号的上升沿到来时,如果清零信号为1,则计数器清零,否则计数器进行计数。3.仿真结果例10.7.1的仿真电路图
10.7.2同步置数同步清零加法计数器
//例10.7.2modulecount(out,data,load,reset,clk);output[7:0]out;input[7:0]data;inputload,clk,reset;reg[7:0]out;always@(posedgeclk)//clk上升沿触发beginif(!reset)out<=8'h00;//同步清零,低电平有效elseif(!load)out<=data; //同步预置elseout<=out+1; //计数endendmodule1.Verilog语言描述3.仿真结果10.7.3
异步清零计数器1.Verilog语言描述//例10.7.3modulecount2(out,reset,clk);output[7:0]out;inputclk,reset;reg[7:0]out;always@(posedgeclkornegedgereset)beginif(!reset)out<=0;elseout<=out+1; //计数endendmodule2.
仿真结果例10.7.3的仿真电路图:
例10.7.3的仿真波形图:
10.7.4扭环型计数器态序Q3Q2
Q1Q0F态序Q3Q2Q1Q0F000001000101110001110010211001201001311101310101411110411010501110501101600110610110700010701010扭环型计数器状态转换表
1.Verilog语言描述//例10.7.4modulejohnson(clk,clr,out);inputclk,clr;output[3:0]out;reg[3:0]out;always@(posedgeclkornegedgeclr)beginif(!clr)out<=4'h0;elsebeginout<=(out>>1);out[3]<=~out[0];endendendmodule2.程序说明程序行1的out<=(out>>1)语句使用了右移运算符来实现右移运算功能,移位运算符包括右移位运算符“>>”和左移位运算符“<<”。其使用方法如下:
a>>n
或a<<n
a代表要进行移位的操作数,n代表要移几位。这种移位运算都用0来填补移出的空位。10.8状态机
在有限的状态内,在时钟的驱动下,通过给定初始状态,能够自动完成状态间的循环和相应状态输出的时序逻辑电路。1.状态机的概念0/00/01/01/01/01/10/00/010状态转换图din/op用触发器设计状态机23(b)Mealy型状态机结构图
(a)Moore型状态机结构图输出为当前状态的函数。输出为当前状态和输入的函数。2.状态机的分类10.8.1Moore型状态机Moore型状态机的结构图:
Moore型状态机的状态图
S0:beginop=0;
if(din==0)
next_state=S0;
else
next_state=S1;end//第二个always进程——组合逻辑电路always@(current_stateordin)begincase(current_state)S1:beginop=1;if(din==1)
next_state=S1;
else
next_state=S2;endS2:beginop=0;
if(din==1)
next_state=S2;
else
next_state=S3;enddefault://case缺省项,防止产生锁存器beginop=0;next_state=S0;endendcaseendendmodule
(4)Mealy型状态机的Verilog语言描述
Mealy型状态机结构图
Mealy型状态机状态图
Mealy型:输出是当前状态和输入的函数。modulemealy_machine(clk,din,op);inputclk,din;outputop;reg[1:0]current_state,next_state;regop;parameterS0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;//第一个always进程——时序逻辑电路always@(posedgeclk)begincurrent_state<=next_state;end//第二个always进程always@(current_stateordin)begincase(current_state)S0:begin
if(din==0)beginnext_state=S0;op=0;end
elsebeginnext_state=S1;op=1;endendS1:begin
if(din==1)beginnext_state=S1;op=1;end
elsebeginnext_state=S2;op=0;endendS2:begin
if(din==1)beginnext_state=S2;op=0;end
elsebeginnext_state=S3;op=1;endendS3:begin
if(din==0)beginnext_state=S3;op=0;end
elsebeginnext_state=S0;op=1;endenddefault:begin//case缺省项,防止产生锁存器op=0;next_state=S0;endendcaseendendmoduleMealy型状态机的仿真波形图Moore型状态机的仿真波形图输入或状态改变时,输出立即改变。状态的变化决定输出的变化。仿真结果自动售货机功能:(4)用状态机设计一个自动售货机
它的投币口每次只能投入一枚五角或一元的硬币。投入一元五角钱硬币后机器自动给出一杯饮料;投入两元(两枚一元)硬币后,在给出饮料的同时找回一枚五角的硬币,投币时只能一个一个地投。根据设计要求,共有7个变量,分别为:clk:时钟输入;
reset:系统复位信号;
half_dollar:代表投入5角硬币;
one_dollar:代表投入1元硬币;
half_out:售货机找回一枚5角硬币信号;
dispense:机器售出一瓶饮料;
collect:提示投币者取走饮料。设计分析:输入:高位一元,低位五角;
00—不投币,01
—投币五角,10—投币一元;输出:高位为售出饮料,低位为找回五角硬币;
00—没有输出,10—售出饮料,11—售出饮料的同时找回五角硬币。状态转换图的确定one_dollarhalf_dollar/dispensehalf_out/*clk:时钟;
reset:
系统复位
输入:half_dollar:投入五角硬币;one_dollar:投入一元硬币;
状态:idle:空闲状态;half:五角硬币状态;one:一元硬币状态;
输出:dispense:售出一瓶饮料;half_out:找回五角硬币;collect:提示投币者取走饮料*/Verilog语言描述modulemachine(one_dollar,half_dollar,collect,half_out,dispense,reset,clk);parameteridle=2'b00,half=2'b01,one=2'b10;inputone_dollar,half_dollar,reset,clk;outputcollect,half_out,dispense;regcollect,half_out,dispense;reg[1:0]D;//always进程always@(posedgeclk)beginif(reset)//当reset为1时,系统复位,初始为idle状态begindispense=0;collect=0;half_out=0;D=idle;endelsecase(D)idle:if(half_dollar)begindispense=0;collect=0;half_out=0;D=half;endelseif(one_dollar)begindispense=0;collect=0;half_out=0;D=one;endelsebegindispense=0;collect=0;half_out=0;D=idle;endhalf:
if(half_dollar)begindispense=0;collect=0;half_out=0;D=one;
endelseif(one_dollar)begindispense=1;
collect=1;half_out=0;D=idle;endelsebegindispense=0;collect=0;half_out=0;D=half;endone:
if(half_dollar)begindispense=1;collect=1;half_out=0;D=idle;endelseif(one_dollar)begindispense=1;collect=1;half_out=1;D=idle;endelsebegindispense=0;collect=0;half_out=0;D=one;enddefault://case缺省项begindispense=0;collect=0;half_out=0;D=idle;endendcaseendendmodule自动售货机的仿真波形图:仿真结果连续两次投入一元硬币后输出结果。连续三次投入五角硬币后输出结果。【10-5】某雷达站有三部雷达A、B、C,其中A和B的功率消耗相等,C的功率是A的两倍。这些雷达由两台发电机X和Y供电,发电机X的最大输出功率等于雷达A的功率消耗,发电机Y的最大输出功率是X的3倍。要求设计一个逻辑电路,能够根据各个雷达的启动和关闭信号,以最节约电能的方式控制发电机X和Y的启动、停止。要求:1.由题意列出真值表(标明相关逻辑变量的逻辑定义);2.写出Verilog语言描述。moduletcm(a,b,c,X,Y); inputa,b,c; outputX,Y;regX,Y; always
begin
if(((a==0)&&(b==0))&&(c==0))
begin X=0;Y=0;
end elseif(((a==0)&&(b==0))&&(c==1))
begin X=0;Y=1;
end
方式一:elseif(((a==0)&&(b==1))&&(c==0))
begin X=1;Y=0;
endelseif(((a==0)&&(b==1))&&(c==1))
begin X=0;Y=1; endelseif(((a==1)&&(b==0))&&(c==0))
begin X=1;Y=0;
endelseif(((a==1)&&(b==0))&&(c==1))
begin X=0;Y=1;
end
elseif(((a==1)&&(b==1))&&(c==0))begin X=0;Y=1;
endelse
begin
X=1;Y=1;
endendendmodule moduletcm(a,b,c,X,Y); inputa,b,c; outputX,Y;regX,Y; always@(aorborc)case({a,b,c})3'b000:{X,Y}=2'b00;3'b001:{X,Y}=2'b01;3'b010:{X,Y}=2'b10;3'b011:{X,Y}=2'b01;3'b100:{X,Y}=2'b10;3'b101:{X,Y}=2'b01;3'b110:{X,Y}=2'b01;3'b111:{X,Y}=2'b11;default:{X,Y}=2'bx;endcaseendmodule方式二:【10-6】用FPGA器件实现一个用于步进电机驱动电路的序列脉冲发生器,步进电机有ABCDE
五相绕组,工作时的导通顺序为AB--ABC--BC--BCD--CD--CDE--DE--DEA--EA--EAB--AB。要求:1.列出状态转换表;2.用VerilogHDL语言编写程序。CPQaQbQcQdQe011000111100201100301110400110500111600011710011810001911
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年通风消声器项目资金筹措计划书代可行性研究报告
- 2024年解除劳动关系协议模板
- 2024年洒水车租赁协议模板
- 城市中心2024停车场地租赁协议
- 2024年工程承包协议格式
- 2024年度新鲜猪肉购销协议模板
- 2024专业修路工程协作协议
- 2024小食品买卖协议书
- 2024年常用劳务协议模板精简
- 2024年土地租赁用于弃土场协议模板
- 2024入团积极分子入团考试题库含答案
- 2024江苏苏豪控股集团招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 给甲方工程联系函范文(十八篇)
- 争做科学小能手主题班会
- DL-T 5148-2021水工建筑物水泥灌浆施工技术条件-PDF解密
- 陕煤集团笔试题库及答案
- 高中数学《函数的概念及其表示》大单元专题教学设计
- 精神病服药自我管理
- 数据安全与合规性审查报告
- 2023年国网西藏电力有限公司高校毕业生招聘考试真题及答案
- 人防通风施工方案及人防通风安装施工方案
评论
0/150
提交评论