您的当前位置:首页正文

EDA设计的自动售饮料机+[文档在线提供]

2021-04-06 来源:我们爱旅游


前言

随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。经过人工设计、制作实验板、调试再修改的多次循环才定型的传统产品设计方法必然被计算机辅助设计所取代,因为这种费时费力又费资源的设计调试方法既增加了产品开发的成本,又受到实验工作场地及仪器设备的限制。为了克服上述困难,加拿大Interactive Image Technologies公司推出的基于Windows 95/98/NT操作系统的EDA软件。他可以将不同类型的电路组合成混合电路进行仿真。此外,从另一角度来看,随着计算机技术和集成电路技术的发展,现代电子与电工设计,已经步入了电子设计自动化(EDA)的时代,采用虚拟仿真的手段对电子产品进行前期工作的调试,已成为一种发展的必然趋势。通过对实际电子线路的仿真分析,从而提高对电路的分析、设计和创新能力。

数字集成电路本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。

FPGA(现场可编程门阵列)与 CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL,GAL等逻辑器件的基础之上发展起来的。同以往的PAL,GAL等相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。这样的FPGA/CPLD实际上就是一个子系统部件。

本次EDA课程设计就是利用VerilogHDL来设计基于ACEX1K30TC144-3型号的FPGA来设计一个自动售货机,机器设有2个投币孔,可以接受一元和五角的硬币,每瓶饮料2.5元,可用2个按键来代替。还设有2个输出,要求有找零和提示信号,分别输出饮料和找零,设计按照EDA课程设计的流程,源代码的编写,前仿真,综合,然后布局布线,后仿真,前、后仿真验证成功后,下载到FPGA实验箱上进行验证。本此设计综合利用ModelSim SE 6.0、leonardospectrum、MAX+PLUS2 10.0等设计软件进行课程设计。

第1页共12页

目 录

一、自动售饮料机系统设计任务书

二、自动售饮料机方案

三、自动售饮料机控制系统设计详细说明

1.系统完整程序代码及系统测试程序代码

2.系统的顶层原理图、RLT级原理图、technology级原理图 3.前仿真波形及分析 4.综合后仿真波形及分析 5.EDA试验箱的实验下载及调试 6.系统原理图

四、系统设计工作进程

1.小组成员分工及安排 2.工作日程表

3.本人承担的任务和执行的情况

五 、收获和体会

六、参考文献

第2页共12页

一、自动售饮料机系统设计任务书

课程设计要求:

设计一个自动售饮料机。假定每瓶饮料售价为2.5元,可使用两种硬币,即5角和1元,机器有找零功能。

机器设计有2个投币孔,可用2个按键来代替。还设有2个输出孔,分别输出饮料和找零,提示用户取走饮料和零钱。

二、 自动售饮料机方案

Verilog程序源代码:

module sell(yi_yuan,wu_jiao, get,half_out,sell_out,reset,clk); parameter idle=0, half=1, one=2,two=3,three=4; input yi_yuan,wu_jiao,reset,clk; output get,half_out,sell_out; reg get,half_out,sell_out; reg[2:0] s;

always @(posedge clk)

begin

if(reset) begin

sell_out=0; get=0; half_out=0; s=idle; end else case(s)

idle: begin

sell_out=0; get=0; half_out=0; if(wu_jiao) s=half; else if(yi_yuan)s=one;

end half: begin

if(wu_jiao) s=one;

else if(yi_yuan) s=two; end

one: begin

if(wu_jiao) s=two;

else if(yi_yuan)s=three;

end

第3页共12页

two: begin

if(wu_jiao) s=three; else if(yi_yuan) begin

sell_out=1;get=1; s=idle;

end

end

three: begin

if(wu_jiao) begin

sell_out=1; get=1; s=idle; end

else if(yi_yuan)

begin

sell_out=1;get=1;half_out=1; s=idle;

end

end default:begin

sell_out=0; get=0; half_out=0; s=idle; end endcase end

endmodule

测试代码:

`timescale 1ns/1ns module sell_top;

reg yi_yuan,wu_jiao,reset,CLK; wire get,half_out,sell_out; always #50 CLK=~CLK; initial begin

CLK =0; reset=1; #100 reset=0; yi_yuan=0; wu_jiao=0; end

always@(posedge CLK) begin

wu_jiao={$random}%2;#50 wu_jiao=0; end

always@(posedge CLK) begin

第4页共12页

if(!wu_jiao)yi_yuan=1;#50 yi_yuan=0; end

sell m(.yi_yuan(yi_yuan),.wu_jiao(wu_jiao), .get(get),

.half_out(half_out),.sell_out(sell_out),.reset(reset),.clk(CLK));

endmodule

三、 自动售饮料机控制系统设计详细说明

仿真前波形及分析:分析前仿真波形,每个时钟周期为100ns,如图:在100ns系统复位,到550ns时,输入5个wu_jiao信号,get和sell_out信号出现告电平,持续100ns,表示卖出和取饮料信号。第三组开始输入信号:在1050ns且为上升沿时,1个yi_yuan高电平,后接着俩wu_jiao高电平,又一个yi_yuan高电平,half_out/get和sell_out信号出现告电平持续100ns,表示分别有卖出、找零和取饮料信号。在1850ns时第5组测试数据开始,同时为时钟上升沿,分别有三个wu_jiao和一个yi_yuan高电平,满足输出,get、sell_out同时为高,持续100ns,表示分别卖出和取饮料信号。

系统的顶层原理图如下:

第5页共12页

RLT级原理图:

综合后technology级原理图:

第6页共12页

后仿真测试代码:

由于在综合中名字有所改变,故如下的原sell改为sellnow,并且经过综合原clk改为CLK:

`timescale 1ns/1ns module sell_top;

reg yi_yuan,wu_jiao,reset,CLK; wire get,half_out,sell_out; always #50 CLK=~CLK; initial begin

CLK =0; reset=1; #100 reset=0; yi_yuan=0; wu_jiao=0; end

always@(posedge CLK) begin

wu_jiao={$random}%2;#50 wu_jiao=0; end

第7页共12页

always@(posedge CLK) begin

if(!wu_jiao)yi_yuan=1;#50 yi_yuan=0; end

sellnow m(.yi_yuan(yi_yuan),.wu_jiao(wu_jiao),

.get(get),.half_out(half_out),.sell_out(sell_out),.reset(reset),.CLK(CLK));

endmodule

后仿真图形如下:

后仿真图形分析:采用系统函数随机产生测试数据,在100ns时系统复位,在150ns时测试数据有效,输入5个wu_jiao信号,在550ms时满足输出,但在650ns时输出get、sell_out同时为高,持续100ns,布局布线后信号产生迟延为100ns,在650ns到950ns中输入3个wu_jiao和一个yi_yuan信号,在950ns使满足输出,但在1050ms时产生输出,get、sell_out同时为高,持续100ns,在1050ns到1350ns中输入2个wu_jiao 2个yi_yuan信号,在1350ns时满足输出,但在1450ns时输出get、half_out、sell_out同时为高,持续100ns,通过以上分析可以知道,经过综合后,信号产生了100ns的时间迟延,状态符合设计要求。设计初步符合设计要求。

EDA试验箱的实验:经过以上前仿真,综合,然后布局布线,后仿真,前、后仿真验证成功

第8页共12页

后,下载到FPGA实验箱成功得到led显示,与上面的仿真波形相对应,与设计思想吻合,实验部分已经成功,下面是原理图的绘制:

系统原理图:

第9页共12页

在protel上画出如上所示的原理图

四、系统设计工作进程

小组成员: 分工合作:

工作日程表

周次 日期 设计内容 具体要求 完成课程的选题,资料和电子档资料的查询与收集,完成总体框架的设计 设计教室 指导时间段 5203 9:00-11:00 17 12.24-26 课题选择 任务分配 第10页共12页

17 12.27 源程序,测试程序 系统前后仿真 完成源程序以及测试程序的编写 5203 9:00-11:00 17 12.28-29 用ModelSim作前仿真;综合; 用Max+plusII布线后仿真; 在EDA6000实验箱上硬件验证 EDA实验室 9:00-11:00 18 1.2 硬件验证 EDA实验室 9 :00-11:00 18 1.3-1.4 课程设计报告总结及验收

本人承担的任务和执行的情况:

完成设计报告 5203 9:00-11:00 从一开始的源代码和测试代码的编写我已经感觉到这次课程设计的重要与必要,所以我很认真的完成了这次的任务,就自己的分工来说,却是感觉到verilog知识的不足与欠缺。

我这次是负责代码的编写与最后原理图的绘制,代码来说是比较轻松的,因为自己也有一些有关eda电子设计关于自动售货机的资料,再结合这次课程设计的要求,综合自己所学的知识,根据资料上的一些总的框架,编写出了程序源代码与测试代码,经过ModelSim SE 6.0、leonardospectrum、MAX+PLUS2 10.0的仿真与综合,发现有问题的地方及时改掉,经过反复的操作终于达到目的,再后仿真时经常遇到错误,不是没有波形就是没有延迟,或者是波形不能完整出现,发现是测试代码的不正确造成,但还需要在前仿真正确的前提下改正,经过仔细的观察终于完成正确的后仿真,基本完成设计要求,但在后面的protel应用中还是问题层出不穷,发现自己还是需要认真学习有关protel的知识,甚么有关库文件的应用与器件的连接之间的操作,还是很生疏,但在认真努力下还是完成了原理图的绘制。

课程设计小结:

这次课程设计是采用可编程逻辑器件进行设计,在完成设计的仿真和硬件验证的基础

第11页共12页

上,进行外围电路的设计,系统的调试,这次的课程设计使我更进一步学习认识了EDA数字系统设计的知识,verilog语言的巩固,另外ModelSim SE 6.0、leonardospectrum、MAX+PLUS2 10.0等软件的应用,EDA实验箱的配置等一系列的学习与应用,不仅学到了很多新的知识,而且又巩固了以前的老概念,在进行代码编写的时候,熟悉了verilog语言的格式及用法,在仿真及综合的时候学会了怎样检查代码的语法或是用法的不正确,进行EDA实验箱的应用时又学会了怎样配置 FPGA及管脚的对应,在绘制系统原理图是又一步一步学习了protel的用法及连线,各种库文件的调用,生成PCB版图的方法等,总的在这次的课程设计的过程中学到了很多EDA电子电路设计的关联的知识,另我的知识更加丰富,在FPGA方面的知识更加的得到巩固。

参考文献

1、Verilog数字系统设计教程 夏宇闻编著 北京航空航天大学出版社 2、Protel 99SE印刷电路板设计教程 肖玲妮、袁增贵 编著 清华大学出版社

第12页共12页

因篇幅问题不能全部显示,请点此查看更多更全内容