数字系统设计技术课程设计报告.docx
- 文档编号:24989001
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:13
- 大小:145.02KB
数字系统设计技术课程设计报告.docx
《数字系统设计技术课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字系统设计技术课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
数字系统设计技术课程设计报告
深圳职业技术学院
ShenzhenPolytechnic
数字系统设计技术
课程设计
课题名称:
电子售货机
学院:
电子与通信工程学院
班级:
组员:
学号:
指导老师:
目录
一、设计方案1
1、功能简介1
2、开发测试环境选择1
二、售货机EDA程序设计1
1、定义端口与信号说明1
1.1输入端口1
1.2输出端口1
1.3信号2
2、状态模块说明2
2.1状态转换图2
2.2购买1元商品模块2
2.2购买5元商品模块3
2.3购买7元商品模块4
2.4顶层电路结构4
三、小结5
四、附录5
1、使用说明5
2、参考文献资料5
3、附表6
一、设计方案
1、功能简介
本文采用状态机的方法所设计的简易电子售货机可出售1元、5元、7元的商品,可接受1元、5元、10元的投币,可显示选择商品的价格,可找回购买后的余额。
若投币金额充足则自动给出对应的商品和自动找零,且在投币购买过程中若投币余额不足会发出警告。
在商品购买、找零完毕后,售货机会回到初始状态,顾客可进行下次购买。
另设有初始化按钮,按下之后售货机回到初始状态。
2、开发测试环境选择
开发和仿真软件选择了Altera公司的综合性PLD/FPGA开发软件QuartusII8.0,首先在QuartusII8.0下进行程序设计,编译通过后用QuartusII8.0进行功能仿真并检查对应的功能。
二、售货机EDA程序设计
1、定义端口与信号说明
1.1输入端口
reset:
异步复位端口,低电平有效;clk:
时钟信号端口,控制状态的转换;item1:
1元商品选择端口;item5:
5元商品选择端口;item7:
7元商品选择端口;ok:
商品选择确认端口;coin1:
1元投币信号端口;coin5:
5元投币信号端口;coin10:
10元投币信号端口。
1.2输出端口
zhaoqian:
退钱信号端口;jiage:
对应商品价格显示端口;get1:
1元商品输出端口:
get5:
5元商品输出端口;get7:
7元商品输出端口;warn:
投币金额不足提示窗口。
1.3信号
s0:
初始状态信号;rmb1:
购买1元商品模块信号;rmb5:
购买5元商品模块信号;rmb7:
购买7元商品模块信号;now_state:
当前信号保存变量;next_state:
下一时钟上升沿读取信号保存变量。
2、状态模块说明
2.1状态转换图
本程序状态机设计包含4个状态s0:
初始态;rmb1:
1元商品购买;rmb5:
5元商品购买;rmb7:
7元商品购买。
2.2购买1元商品模块
本模块处理当顾客选择1元商品后的处理,执行流程如下:
首先价格端口显示价格为1元,顾客在按下确认键,ok<=’1’后,若投币1元,则get1<=’1’给出1元商品、zhaoqian<=0退钱0元;若投币5元,则get1<=‘1’给出1元商品、zhaoqian<=4退钱4元;若投币10元,则get1<=‘1’给出1元商品、zhaoqian<=9退钱9元。
仿真结果见图1:
2.2购买5元商品模块
本模块处理当顾客选择5元商品后的处理,执行流程如下:
首先价格端口显示价格为5元,顾客在按下确认键,ok<=’1’后,若投币1元,则warn<=‘1’投币金额不足提示,zhaoqian<=1退钱1元;若投币5元,则get5<=‘1’给出5元商品、zhaoqian<=0退钱0元;若投币10元,则get5<=‘1’给出5元商品、zhaoqian<=5退钱5元;仿真结果见图2:
2.3购买7元商品模块
本模块处理当顾客选择7元商品后的处理,执行流程如下:
首先价格端口显示价格为7元,顾客在按下确认键,ok<=’1’后,若投币1元,则warn<=‘1’投币金额不足提示,zhaoqian<=1退钱1元;若投币5元,则gwarn<=‘1’投币金额不足提示、zhaoqian<=5退钱5元;若投币10元,则get7<=‘1’给出7元商品、zhaoqian<=3退钱7元;仿真结果见图3:
2.4顶层电路结构
将售货机的VHDL生成IC连接如图4:
三、小结
在学期期末,我们进行了FPGA的课程设计,按老师的要求我们组选择了电子售货机的项目,并用QuartusII8.0软件进行了程序的编写和仿真。
在设计的过程中我们小组遇到了很多的问题,在本次自动售货机我们采用状态机的方法进行设计,但我们自身对状态机的理解不够透彻导致在设计的过程中软件编译时的语法逻辑检测无法通过,比如Error(10028):
Can'tresolvemultipleconstantdriversfornet"next_state.s0"atshjv.vhd(44),在并行进程中对同一信号进行了多次赋值导致了并行信号冲突问题;Error:
Zero-timeoscillationinnode"|shouhuoji|Add0~22"attime10.0ns.Checkthedesignorvectorsourcefileforcombinationalloop,在功能仿真时出现了“死锁”问题,最后通过查找资料,改变设计思路的方式基本解决问题。
在设计过程中我们小组经历多次失败,程序也换了很多版本,通过努力最终基本达到任务要求,虽然编写的程序存在情况考虑不足等BUG,但我们也明白了这不仅仅在意的是结果,而更注重的是过程。
四、附录
1、使用说明
本程序仿真方法如下:
例如:
在建立好仿真文件后,在开始的信号周期内为复位端reset送低电平,若要购买1元商品则在下一个时钟周期中将item1、ok以及coin1、coin5或coin10置高,则程序会给出对应的jiage、zhaoqian的处理结果。
其他模块仿真方法同理。
2、参考文献资料
a.数字电路EDA设计/顾斌等编著.西安电子科技大学出版社,2004.2(2010.2重印)
b.FPGA/CPLD应用技术:
Verilog语言版/王静霞主编.北京电子工业出版社,2011.1
c.XX文库
3、附表
简易电子售货机源代码
libraryieee;
useieee.std_logic_1164.all;
entityshouhuojiis
port(reset,clk,item1,item5,item7,coin1,coin5,coin10,ok:
instd_logic;
zhaoqian:
outintegerrange0to10;jiage:
outintegerrange0to10;
get1,get5,get7,warn:
outstd_logic);
endshouhuoji;
architecturedataofshouhuojiis
typestateis(s0,rmb1,rmb5,rmb7);
signalnext_state,now_state:
state;
--signaltt:
integerrange0to50000000;
begin
--process(tt,clkk)--设定1s周期clk
--begin
--if(clkk'eventandclkk='1')thentt<=tt+1;
--if(tt=5)then
--tt<=0;clk<=notclk;
--endif;
--endprocess;
process(clk,reset)
begin
if(reset='0')then
now_state<=s0;
elsif(clk'eventandclk='1')then
now_state<=next_state;
endif;
endprocess;
process(now_state,item1,item5,item7,coin1,coin5,coin10,ok,display)
begin
casenow_stateis
whens0=>
get1<='0';
get5<='0';
get7<='0';
warn<='0';
jiage<=0;
zhaoqian<=0;
if(item1='1')then
next_state<=rmb1;jiage<=1;warn<='0';--1元购买模块
elsif(item5='1')then
next_state<=rmb5;jiage<=5;warn<='0';--5元购买模块
elsif(item7='1')then
next_state<=rmb7;jiage<=7;warn<='0';--7元购买模块
else
next_state<=s0;jiage<=0;warn<='0';
endif;
--------------------------------------------------------------rmb1
whenrmb1=>
get1<='0';
get5<='0';
get7<='0';
warn<='0';
if(ok='1')then
if(coin1='1')then
get1<='1';
get5<='0';
get7<='0';
warn<='0';
zhaoqian<=0;
next_state<=s0;
elsif(coin5='1')then
get1<='1';
get5<='0';
get7<='0';
warn<='0';
zhaoqian<=4;
next_state<=s0;
elsif(coin10='1')then
get1<='1';
get5<='0';
get7<='0';
warn<='0';
zhaoqian<=9;
next_state<=s0;
endif;
elsenext_state<=rmb1;
endif;
--------------------------------------------------rmb5
whenrmb5=>
get1<='0';
get5<='0';
get7<='0';
warn<='0';
if(ok='1')then
if(coin1='1')then
get1<='0';
get5<='0';
get7<='0';
warn<='1';
zhaoqian<=1;
next_state<=rmb5;
elsif(coin5='1')then
get1<='0';
get5<='1';
get7<='0';
warn<='0';
zhaoqian<=0;
next_state<=s0;
elsif(coin10='1')then
get1<='0';
get5<='1';
get7<='0';
warn<='0';
zhaoqian<=5;
next_state<=s0;
endif;
elsenext_state<=rmb5;
endif;
---------------------------------------------rmb7
whenrmb7=>
get1<='0';
get5<='0';
get7<='0';
warn<='0';
if(ok='1')then
if(coin1='1')then
get1<='0';
get5<='0';
get7<='0';
warn<='1';
zhaoqian<=1;
next_state<=rmb7;
elsif(coin5='1')then
get1<='0';
get5<='0';
get7<='0';
warn<='1';
zhaoqian<=5;
next_state<=rmb7;
elsif(coin10='1')then
get1<='0';
get5<='0';
get7<='1';
warn<='0';
zhaoqian<=3;
next_state<=s0;
endif;
elsenext_state<=rmb7;
endif;
endcase;
endprocess;
enddata;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 系统 设计 技术 课程设计 报告