大规模集成电路课程设计
学院:信息工程学院
专业:电子信息工程
班级:信息08—2班
学号:
姓名:
基于Verilog HDL自动售票系统的实现
一、课程设计目的
作为通信专业的学生,通过这次的课程设计,可以提高我们对集成电路开发及电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。四人一题特别有利于锻炼我们团队的合作以及分析问题和解决问题的能力。设计过程的复杂加老师的严格要求有益于培养我们严谨的工作作风。本次课题是大规模集成电路的课程设计,旨在通过自己对所需功能芯片的设计与实现来巩固以前所学的集成电路的基础知识,同时也提高动手实践的能力,还有为将来进行更大规模更复杂的开发积累经验。
二、课程设计要求:
本设计完成基于Verilog HDL的自动售票系统,综合软件用Xilinx ISE 。本自动售票系统可以完成1元、2元、3元、4元四种票的自动售出,货币种类可以是1元、5元、10元、50元、100元,能自动找零和显示
三、课程设计分析:
1、根据设计要求分析可得系统共有以下几个模块:
(1)统计模块:根据各种货币输入统计出总钱数提供给主控模块。
(2)主控模块:完成总体控制和各种控制信号。
(3)出票模块:根据所需票和主控模块传来的出票信号输出相应的票。
(4)找零模块:根据主控模块送来的需找零钱数或需退回钱数输出相应票额。
(5)顶层模块:负责各模块间的连接,组成一个可用的自动售票系统。
2、总体结构如下:
需票
出票数
控
制
信
输入货币 总钱数 号
找零数
余额显示
四、课程设计内容:
根据设计分析的结果设计的系统如下:
1.主控模块
图4.3主控模块
(1)程序如下:
// 主控模块,完成自动售票逻辑 计算及产生各种控制信号
module zhukong ( rst,clk, //复位高有? 时钟
get,cancel,
sel, //票类别,
count, //票数
money, //总钱数
mout, //找零钱数
finish, //出钱信号
finishp //出票信号
);
input rst;
input clk; //时钟,
input get,cancel;
input [1:0] sel,count;
input [7:0] money;
output reg [7:0] mout;
output reg finish,finishp; //完成脉冲
always @ (posedge rst or posedge clk)
begin
if(rst==1)
begin
mout = 0;
finish <= 0;
finishp <= 0;
end
else
begin
if((get == 1)&&(money >= sel*count + count))
begin
finish <= 1;
finishp <= 1;
mout = money - sel*count - count;
end
else if((cancel == 1)||((get == 1)&&(money < sel*count + count)))
begin
finishp <= 0;
finish <= 1;
mout = money;
end
else
begin
finishp <= 0;
finish <= 0;
end
end
end
endmodule
具体过程如下:
复位信号为1时,则出钱信号为0,出票信号为0,找零钱信号为0;否则,在按确认键之后,给的总钱数大于所要买的票的总数时,则出钱信号为1,出票信号为1,找零钱信号为1,所找的零钱数为总钱数减去票数的总额;如果点击取消键或者点击确认键但是总钱数小于所买的票数,则出票信号为0,出钱信号为1,找钱信号为1,所找钱数为给的总钱数;否则在其他状态下,出票信号、出钱信号都为0。
(2)程序仿真:
图4.4主控模块仿真
由仿真波形知get ,cancel分别为确认买票和取消买票信号,高脉冲有效,由仿真图:买4元一张的票3张,总钱数179,仿真结果 输出完成信号脉冲和出票信号脉冲,并输出找零总数167元,故正确。
2.统计模块:根据各种货币输入统计出总钱数提供给主控模块。
3.出票模块:根据所需票和主控模块传来的出票信号输出相应的票。
4.找零模块:根据主控模块送来的需找零钱数或需退回钱数输出相应票额。
5.顶层模块:负责各模块间的连接,组成一个可用的自动售票系统。
五、课程设计总结
本系统可以完成自动售票逻辑,售票完成后不需手动复位,售票完成后自动进入等待下一次售票,通过主控模块输出完成的控制信号(finish),让统计模块清零,其他模块完成后即可进行下一次售票的操作。
在整个电路设计完毕并仿真成功后发现,其实整个电路设计实现的功能还是比较实用和易于操作的,而自己也为此付出了许多:从根据课题要求查找相关资料,学习硬件语言,到自己能够编写小程序;从对软件Xilinx ISE的摸索,一次次修改程序,到仿真得到较满意的结果;从对截图工具的搜索下载,论文资料的搜集,到文字排版的学习。在设计过程中遇到了很多困难,在指导老师的指引和同学的帮助下,通过不断探索学习,使问题得到了一定的解决。
通过本学期课程设计的学习,我从中学习到了很多东西,对可编程逻辑器件,Verilog HDL语言,Xilinx ISE软件有了一定的了解,尤其是用Verilog HDL语言编程和仿真。在本次设计中最大的收获是在不断地发现问题,分析问题,解决问题的过程中培养了自己的科研能力,为今后的学习工作做了一个良好的铺垫。下载本文