用状态机设计多功能逻辑笔
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用状态机设计多功能逻辑笔
多功能逻辑笔设计
班级:电本1002班
姓名:
指导老师:
完成时间:2014年5月15日
摘要
随着当今时代的发展,我们在很多领域都需要操作简易,易于携带的检测装置来实现随时随地出现的设备故障的初步检测,为将来的维修做好准备。
基于如此强烈的需求,我们很有必要对该课题进行一定的研究,从而掌握相关技术,为将来的研究打下基础。
本文就是基于EDA的设计—用状态机设计的多功能逻辑笔。
关键词:EDA 状态机多功能逻辑笔
目录
第一章所用语言和运行环境 (5)
1.1 Verilog HDL语言 (5)
1.2 QuartusⅡ设计平台 (5)
第二章设计要求 (6)
第三章状态机简介 (7)
第四章程序及仿真结果 (8)
4.1 实验程序 (8)
4.2 仿真结果 (10)
第五章设计总结 (10)
第一章所用语言和运行环境
1.1 Verilog HDL语言
随着集成电路规模的越来越大,数字系统设计的越来越复杂,Verilog HDL语言在硬件电路设计的优越性也会越来越显突出。
目前,数百万门规模的FPGA/CPLD已进入实用,Verilog HDL强大的系统描述能力、规范的设计结构和简洁、灵活的编程风格会使其必将能会用来完成大数字系统、超大规模数字系统的几乎全部设计任务。
Verilog HDL语言的优势:由于它在其门级描述的底层,也就是晶体管开关的描述方面比VHDL等各种其它的HDL语言有更强的功能。
所以在复杂数字逻辑电路和系统的设计仿真时更有优势;描述的设计思想、电路结构和逻辑关系清晰明了,并且设计语言简练、易学易用;其模块化分层结构在大规模设计时更能体现出优势。
因此可以看出,Verilog HDL语言在EDA设计中相对与其他的各种硬件描述语言更有优势。
1.2 QuartusⅡ设计平台
Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具
有运行速度快,界面统一,功能集中,易学易用等特点。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。
Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。
Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
第二章设计要求
设计一个5功能逻辑笔,要求能测高电平(高于2.5V)、低电平(低于1V)、中电平(低于2.5V、高于1V)、高阻态和脉冲(即快
速变化的电平)。
要求用5个发光二极管分别显示这五种结果。
第三章状态机简介
状态机简写为FSM(Finite State Machine),主要分为2大类:第一类,若输出只和状态有关而与输入无关,则称为Moore状态机;第二类,输出不仅和状态有关而且和输入有关系,则称为Mealy状态机。
要特别注意的是,因为Mealy状态机和输入有关,输出会受到输入的干扰,所以可能会产生毛刺(Glitch)现象,使用时应当注意。
事实上现在市面上有很多EDA工具可以很方便的将状态图的描述转换成可以综合的VHDL程序代码。
状态机可归纳为4个要素,即现态、条件、动作、次态。
这样的归纳,主要是出于对状态机的内在因果关系的考虑。
“现态”和“条件”是因,“动作”和“次态”是果。
详解如下:
①现态:是指当前所处的状态。
②条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。
③动作:条件满足后执行的动作。
动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。
动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。
④次态:条件满足后要迁往的新状态。
“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
第四章程序及仿真结果
4.1 实验程序
module LGC_PEN (CLK, V0,TEST,LED);
input CLK;
input [2:1] V0;
output [4:0] LED; output TEST;
parameter
s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8,
s9=9,s10=10,s11=11,s12=12,s13=13;
reg[4:0] ST,NST; reg TEST; reg[3:0] LED ;
always @(posedge CLK ) ST<=NST;
always @(ST or V0) begin
case (ST)
s0: begin TEST<=1'b1; NST<=s1; end
s1: begin TEST<=1'b1; if (V0==2'b10) NST<=s2; else
NST<=s4; end
s2: begin TEST<=1'b0; NST<=s3; end
s3: begin TEST<=1'b0;
begin if (V0==2'b01) begin LED <=4'b1000;
NST<=s0; end else NST<=s4; end end
s4: begin if (V0==2'b01) NST<=s5; else NST<=s7; end s5: begin if (V0==2'b01) NST<=s6; else NST<=s7; end s6: begin if (V0==2'b01) begin LED<=4'b0001; NST<=s0; end else NST<=s7; end
s7: begin if (V0==2'b10) NST<=s8; else NST<=s10; end
s8: begin if (V0==2'b10) NST<=s9; else NST<=s10; end
s9: begin if (V0==2'b10) begin LED<=4'b0010; NST<=s0; end else NST<=s10; end
s10: begin if (V0==2'b11) NST<=s11; else NST<=s13; end
s11: begin if (V0==2'b11) NST<=s12; else NST<=s13; end
s12: begin if (V0==2'b11) begin LED<=4'b0100; NST<=s0; end else NST<=s13; end
s13: begin LED<=4'b1111; NST<=s0; end
default: NST<=s0;
endcase end
endmodule
4.2 仿真结果
第五章设计总结
通过这次的课题研究,我们深入的了解到了逻辑笔的运作流程,并通过状态机实现了该课题的要求效果,为将来更深远的研究奠定了基础。