EDA大作业格式与范例.docx

上传人:b****5 文档编号:11537127 上传时间:2023-03-19 格式:DOCX 页数:10 大小:64.45KB
下载 相关 举报
EDA大作业格式与范例.docx_第1页
第1页 / 共10页
EDA大作业格式与范例.docx_第2页
第2页 / 共10页
EDA大作业格式与范例.docx_第3页
第3页 / 共10页
EDA大作业格式与范例.docx_第4页
第4页 / 共10页
EDA大作业格式与范例.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

EDA大作业格式与范例.docx

《EDA大作业格式与范例.docx》由会员分享,可在线阅读,更多相关《EDA大作业格式与范例.docx(10页珍藏版)》请在冰豆网上搜索。

EDA大作业格式与范例.docx

EDA大作业格式与范例

EDA技术

 

课程名称:

EDA技术

设计题目:

基于VerilogHDL语言的

可整点输出学号系统

院系:

信息工程学院

班级:

设计者:

学号:

指导教师:

刘战

设计时间:

2013.06.09

 

五邑大学

目录

第一章引言………………………………..…………………...…3

1.1状态机简介………………………………..….…….………...3

1.2状态检测…….………...………………………………………..3

1.3VerilogHDL硬件描述语言简介……………..…………..……4

1.4VerilogHDL硬件描述语言主要功能简介……………………..4

第二章状态检测机设计……………..……………...…….………6

2.1状态检测机设计要求………………….……………………...6

2.2状态检测机设计思路……………….………………...............6

2.3利用QuartusII软件仿真实现…………………………………6

2.3.1电路变量分析………………………………………………6

2.3.2新建工程moore……………………………………………7

2.3.3设计输入………………………………………...………...7

2.3.4Verilog语言描述…………………………………………...7

2.3.5仿真电路图………………………………………………...8

2.3.6状态装换图…………………………………………………9

2.3.7创建波形文件………………………………………………9

2.3.8QuartusII仿真设置……………………………….………..10

2.3.9仿真结果………...………………………………………….10

第三章总结…………………………………………….…….……11

参考文献…………………………………………………..……….…12

第一章引言

1.1状态机简介

有限状态机是绝大部分控制电路的核心结构。

有限状态机是一种概念性机器,它能采取某种操作来响应一个外部事件。

具体采取的操作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序。

之所以能做到这一点,是因为机器能跟踪一个内部状态,它会在收到事件后进行更新。

为一个事件而响应的行动不仅取决于事件本身,还取决于机器的内部状态。

另外,采取的行动还会决定并更新机器的状态。

这样一来,任何逻辑都可建模成一系列事件/状态组合。

状态机可归纳为4个要素,即现态、条件、动作、次态。

这样的归纳,主要是出于对状态机的内在因果关系的考虑。

“现态”和“条件”是因,“动作”和“次态”是果。

详解如下:

①现态:

是指当前所处的状态。

②条件:

又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。

③动作:

条件满足后执行的动作。

动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。

动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

④次态:

条件满足后要迁往的新状态。

“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

状态机可以分为以下两种类型:

Moore型:

输出是当前状态的函数。

Mealy型:

输出是当前状态和输入的函数。

Mealy型状态机输出的变化先于Moore型状态机。

具体来说,Mealy型状态机的输出在输入变化的时候立刻发生变化;而Moore型状态机在输入变化后,还必须等到时钟的到来,时钟使状态发生变化时才导致输出的变化,所以比Mealy型状态机要多等待一个时钟周期。

1.2状态检测

所谓状态检测,就是直接对分组的数据进行处理,并且结合前后分组的数据进行综合判断,然后决定是否允许该数据包通过。

状态检测技术的发展由来已久,早期的电报即可看作是基于状态检测的通讯手段。

近年来,随着计算机技术与互联网的不断发展,数据传送量已经变得越来越大,如何保证接收到的数据准确无误,已经受到人们越来越多的关注。

为了解决这一问题,科学家和工程师们已经研发出了很多种检错与纠错码,而这些技术的实现又肯定离不开状态检测技术的应用,因此状态检测技术在数据传送中起着十分重要的作用。

当然状态检测技术不仅应用于数据传送领域,还广泛应用于其他领域,这里不作赘述。

1.3VerilogHDL硬件描述语言简介

VerilogHDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。

被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。

数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。

VerilogHDL描述逻辑电路时常用3种描述方式,分别为:

行为型描述、数据流型描述和结构型描述。

行为型描述指对行为与功能进行描述,它只描述行为特征,而没有涉及用什么样的逻辑电路来实现,因此是一种高级语言描述方式,具有很强的通用性与有效性;数据流型描述指通过assign连续赋值实现组合逻辑功能的描述方式;结构型描述指描述实体连接的结构方式,这里的实体一般指Verilog语言已定义的基元,也就是说结构型描述指利用Verilog语言已定义的基元描述逻辑电路的描述方式。

VerilogHDL的3种描述方式中,行为型描述方式注重整体与功能,语句可能更简略,但写出来的语句可能不能被硬件所实现,即不能被综合;结构型语句通常更容易被综合,但可能语句显得更复杂。

在实际开发中往往结合使用多种描述方法。

VerilogHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。

因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。

语言从C编程语言中继承了多种操作符和结构。

VerilogHDL提供了扩展的建模能力,其中许多扩展最初很难理解。

但是,VerilogHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。

当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。

1.4VerilogHDL硬件描述语言主要功能简介

*基本逻辑门,例如and、or和nand等都内置在语言中。

*用户定义原语(UDP)创建的灵活性。

用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。

*开关级基本结构模型,例如pmos和nmos等也被内置在语言中。

*提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。

*可采用三种不同方式或混合方式对设计建模。

这些方式包括:

行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。

*VerilogHDL中有两类数据类型:

线网数据类型和寄存器数据类型。

线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。

*能够描述层次设计,可使用模块实例结构描述任何层次。

*设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。

*VerilogHDL不再是某些公司的专有语言而是IEEE标准。

*人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言。

*VerilogHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。

PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合。

*设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。

*能够使用内置开关级原语在开关级对设计完整建模。

*同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。

*VerilogHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。

这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。

*在行为级描述中,VerilogHDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。

*能够使用门和模块实例化语句在结构级进行结构描述。

*VerilogHDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。

*VerilogHDL还具有内置逻辑函数,例如&(按位与)和|(按位或)。

*对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。

*可以显式地对并发和定时进行建模。

*提供强有力的文件读写能力。

*语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。

 

第二章状态检测机设计

2.1状态检测机设计要求

设计一个基于VerilogHDL语言的状态检测机,其可以对输入的一串二进制数进行检测,用于检测序列中连续3个或3个以上的1。

当检测到3个或3个以上的1时机器输出1,否则输出0。

其状态转换图和状态转化表如下:

图1状态检测机状态转换图

表格1状态检测机状态转换表

现态A

现态B

输入x

次态A

次态B

输出y

0

0

0

0

0

0

0

0

1

0

1

0

0

1

0

0

0

0

0

1

1

1

0

0

1

0

0

0

0

0

1

0

1

1

1

0

1

1

0

0

0

1

1

1

1

1

1

1

要求编写设计源程序,并生成仿真电路图和状态转换表,最后通过仿真实验验证设计的可靠性并给出仿真波形图。

2.2状态检测机设计思路

根据状态检测机的状态转换图,可以确定本系统应选用moore型状态机,即状态机的输出仅受当前状态的控制,而与输入无关。

2.3利用QuartusII软件仿真实现

2.3.1电路变量分析

clk:

时钟输入;

din:

检测输入;

op:

检测输出;

state:

状态输出。

2.3.2新建工程moore

选择File>NewProjectWizard,新建工程文件,输入工程名为moore(注意此处工程名与工程的顶层实体名必须一致)。

在Availabledevices列表中选择FPGA型号EP2C70F896C6(本实验为仿真实验,此处不作硬性要求)。

2.3.3设计输入

在当前工程下,选择File>New菜单,接着选择VerilogHDLFile,单击OK,打开TextEditor。

选择File>Saveas菜单,将文件保存到工程下,文件名为moore,保存类型为VerilogHDLFile,则生成moore.v文件。

2.3.4Verilog语言描述

利用VerilogHDL语言编写的源程序如下:

modulemoore(clk,din,op,state);

inputclk,din;

outputop;

output[1:

0]state;

regop;

reg[1:

0]current_state,next_state;

parameterS0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;

assignstate=current_state;

always@(posedgeclk)

begin

current_state<=next_state;

end

always@(current_stateordin)

begin

case(current_state)

S0:

begin

op=0;

if(!

din)next_state=S0;

elsenext_state=S1;

end

S1:

begin

op=0;

if(!

din)next_state=S0;

elsenext_state=S2;

end

S2:

begin

op=0;

if(!

din)next_state=S0;

elsenext_state=S3;

end

S3:

begin

op=1;

if(!

din)next_state=S0;

elsenext_state=S3;

end

default:

begin

op=0;

next_state=S0;

end

endcase

end

endmodule

2.3.5仿真电路图

保存上述源程序,进行综合编译。

编译无误后,生成不同层面的仿真电路图如下图2、图3所示:

图2状态检测机的RTLViewer

图3状态检测机的TechnologyMapViewer

2.3.6状态装换图

将图2中的current_state打开或直接在moore工程下生成StateMachineViewer文件,即可得到状态检测机的状态装换图如下图4所示:

图4状态检测机的状态装换图

2.3.7创建波形文件

在同一工程下创建波形文件(VectorWaveformFile)moore.vwf,设置终止时间EndTime为200ns。

波形文件如下图5所示:

 

图5状态检测机仿真VectorWaveformFile

 

2.3.8QuartusII仿真设置

选择Assignments>Settings菜单,打开Settings窗口,单击SimulatorSettings,将Simulation设置为Functional,完成设置。

用Processing>GenerateFunctionalSimulationNetlist菜单产生功能仿真所需的网表。

2.3.9仿真结果

单击仿真按钮启动功能仿真。

仿真结果如下图6所示:

图6状态检测机仿真结果

从上图6可以看出,该状态检测机默认初始状态为S0;当时钟clk上升沿到来时,如果检测到输入信号din为1,则状态机的当前状态current_state将由S0变化至S1或由S1变化至S2或由S2变化至S3或由S3变化至S3;当连续3个或3个以上上升沿到来时检测到输入1,则状态检测机输出op为1,表示检测到目标信号。

由此可见,该状态检测机的设计符合设计要求。

 

第三章总结

通过此次对VerilogHDL语言的学习,我认识到了可编程逻辑器件在当前生产科研中的重要地位,尤其是在一些逻辑功能十分复杂的电路设计时,采用VerilogHDL语言设计可大大简化设计流程,降低设计难度。

VerilogHDL语言为我们提供了许多强大的功能,可以利用它来简单的实现组合逻辑电路、时序逻辑电路以及基于状态机的各种逻辑电路设计,简单可靠。

通过此次对QuartusII软件的学习,我认识到该软件是一款简单高效的应用软件,它广泛应用于VHDL和VerilogHDL语言源程序的编写。

QuartusII软件内部提供了许多强大的功能,可以利用它来进行电路的分析与仿真(在最新版本的QuartusII中仿真功能已经弱化),同时也可以利用它来与其他第三方EDA器件联合使用,实现软硬件的结合。

通过此次仿真实验—基于VerilogHDL语言的519进制计数器设计,我掌握了QuartusII软件的基本使用方法以及VerilogHDL语言的语法特点,可以初步编写一些逻辑功能较为简单的源程序。

同时,通过此次实验,我掌握了设计工作的完整流程,为以后的课程设计积累了宝贵的经验。

最后,实验过程中难免遇到一些问题,我们要冷静分析,找出原因。

总之,通过此次实验,我学到了许多有益的知识。

参考文献

[1]杨春玲,王淑娟主编.数字电子技术基础.北京:

高等教育出版社,2011.06

[2]张鹤鸣,刘耀元主编.可编程控制器原理及应用教程[M].北京大学出版社,出版时间:

2007.2

[3].马小军主编.可编程控制器及应用.南京:

东南大学出版社,2007.4

[4].瞿大中主编.可编程控制器应用与实验.武汉:

华中科技大学出版社,2002.12

[5].李树雄主编.可编程控制器原理及应用教程.北京:

航空航天大学出版社,2003.9

[6].程周主编.可编程控制器原理与应用.北京:

高等教育出版社,2003.4

[7].李长久主编.PLC原理及应用.北京:

机械工业出版社,2006.8

[8].廖常初主编.FX系列PLC编程及应用.北京:

机械工业出版社,2005.4

[9].张兴国主编.可编程序控制器技术及应用.北京:

中国电力出版社,2006

[10].罗光伟主编.可编程控制器教程.成都:

电子科技大学出版社,2007.2

[11].王也仿主编.可编程控制器应用技术.北京:

机械工业出版社,2001.9

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 交规考试

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

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