排队电路的EDA课程设计报告

更新时间:2023-09-18 04:38:01 阅读量: 幼儿教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华东交通大学

华东交通大学

电气与电子工程学院

EDA语言与VHDL课程设计报告

课题名称: 排队电路 姓 名: 学 号: 专业班级: 系 ( 院): 电气与电子工程学院 指导老师: 设计时间: 2012年12月24日

设计地点: 三楼电子测控实验室

华东交通大学

目 录

一:排 队 电 路 分 析..................................................1

1、电路要求................................................................................................................................1

2、排队电路的分布....................................................................................................................1

3、VHDL程序模块描述.........................................................................................................3 ①进程p1...........................................................................................................................3

②进程p2...........................................................................................................................5 ③进程p3...........................................................................................................................5 ④进程p4...........................................................................................................................5 ⑤进程p5...........................................................................................................................6 ⑥进程p6...........................................................................................................................6 ⑦进程p7...........................................................................................................................6 ⑧进程p8...........................................................................................................................8

二:波 形 仿 真 图............................................................................................................8

(一)波形仿真图设置............................................................................................................8 (一)Waiter=1的波形图........................................................................................................8 (二)Waiter=0的波形图........................................................................................................8 (三)管脚绑定........................................................................................................................9

三:下载到单片机实验箱上的实验现象.................................................................9

四:课设收获与体会............................................................................................................10

参考文献..................................................................................................11 附录..........................................................................................................12

第 0 页 共 22 页

华东交通大学

一:排 队 电 路 分 析

1、 电路要求

单窗口排队机电路,给每个新来者编号,并计算队伍长度。

(1)进队、离队两个信号作为输入,当前服务号码和队长各由4个数码管显示; (2)初始时队长0,进队号码由1顺序递增,输出编号; (3)有人入队,长度加,有人离队长度减; (4)工作时钟适当即可;

(5)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、时序仿真、下载验证等。

2、 排队电路的分布

实现排队电路系统的硬件电路主要由按键输入单元、可编程逻辑器件控制单元、数码管输出显示单元、晶体振荡器及电源单元等外围电路构成,如图1所示。

程序结果如下图:

其中,按键输入单元完成指令的输入,包括新客户区号按钮、柜台的按钮、系统复位按钮等;可编程逻辑器件控制单元是整个排队系统的核心控制单元,负责响应按键输入单元的指令,经过运算产生相关数字和控制信号送给输出显示单元;输出显示单元主要由多为数码管构成,能实现当前动态显示当前服务的号码和队伍的长度。如图二:

第 1 页 共 22 页

华东交通大学

3、 VHDL程序进程描述

第一部分:写入可编程逻辑器件芯片中的VHDL控制程序,其实体部分的端口定义描述如

下:

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity ordernumsys is

port(rst,clk,tmpclk:in std_logic;

selout:out std_logic_vector(2 downto 0); waiter:in bit;

selbit:out std_logic_vector(7 downto 0); lednum:out std_logic_vector(6 downto 0)); end ordernumsys;

输入信号中,rst是全局复位信号,在rst=1的时候,所有显示和计数被清零;clk是全局时钟;waiter是柜台能服务的按键信号,waiter=1时,就代表柜台可以为已经取号的客户进行服务。输出信号中:selout是由三位选择哪一个数码管。Selbit是从1到8分别代表数码管,控制数码管位选信号,用来控制哪位数码管发光,低电平有效;lednum是控制数码管段选信号,控制数码管显示的具体内容,高电平有效。

第二部分:为了计算各显示单元的值,还需定义如下的一些信号量:

Signal newcustom_ll,newcustom_lh,newcustom_hl,newcustom_hh:

std_logic_vector(3 downto 0); Signal waitcustom_ll,waitcustom_lh,waitcustom_hl,waitcustom_hh: std_logic_vector(3 downto 0); Signal curcustom_ll,curcustom_lh,curcustom_hl,curcustom_hh:

std_logic_vector(3 downto 0); Signal length_ll,length_lh,length_hl,length_hh:

std_logic_vector(3 downto 0); Signal tmpbcdnum:std_logic_vector(3 downto 0); Signal cnt4:integer range 0 to 10 ;

Signal sel:std_logic_vector(2 downto 0);

Signal cnt10:std_logic_vector(1 downto 0); Signal tmpclk:std_logic; 其中:

第 2 页 共 22 页

华东交通大学

①newcustom用来存放新来客户取号时分配的编号的:

newcustom_ll是个位,newcustom_lh是十位,newcustom_hl是百位, newcustom_hh是千位;

②waitcustom用来存放等待人数的编号的:

waitcustom_ll是waitcustom中的个位,waitcustom_lh是waitcustom中的 十位,waitcustom_hl是waitcustom中的百位,waitcustom_hh是waitcustom 中的千位;

③curcustom是用来存放当前接受服务的客户的编号:

curcustom_ll是curcustom中的个位,curcustom_lh是curcustom中的十位, curcustom_hl是curcustom中的百位,curcustom_hh是curcustom中的千位; ④length是用来存放现在队伍长度的:

length_ll是length中的个位,length_lh是length中的十位,length_hl是 length中的百位,length_hh是length中的千位;

⑤tmpbcdnum用来临时存放4位二进制数据; ⑥cnt4代表的是那8个七段数码管; ⑦sel代表的是3个选通信号;

⑧cnt10与tmpclk是时钟分频信号;

第三部分:结构体部分

内部还有八个进程:P1 新客户取号时,号码的变化以及等待的人数的变化; P2 柜台当前服务的号码(curcustom)的计算;

P3 随着时钟上升沿的到来,来控制8个七段数码管的显示; P4 sel的三个选通信号来控制8个七段数码管;

P5 二倍分频电路,设定十进制计数器cnt10来使clk分频成tmpclk; P6 队长的计算:length=newcustom—curcustom(即:新取号的客人号 码—正在服务的客人的号码);

P7 将cnt4与数码管连接起来,设定哪一个数码管显示哪一个数据; P8 七段数码管ABCDEFG的四位二进制数的设定;

4、程序中各进程的详细分析

进程P1:排队人数的变化过程

当新客户来取号时,变量 newcustom、waitcustom的值会发生变化,其数据变化过程流程图如图三所示。客户取号时,分配给客户的编号变量自动加1,当编号超过9999时会自动回到0;同时,当前等待的人也会自动加1,当其超过9999时也回到0。

if rst='0' then newcustom四位全为0000 Waitcustom四位全为0000 elsif clk'event and clk='1' then newcustom_ll<=newcustom_ll+1; if newcustom_ll<\ then newcustom_ll<=newcustom_ll+1; elsif newcustom_lh<\ then

newcustom_lh<=newcustom_lh+1;newcustom_ll<=\ 后面与之步骤相同;直到newcustom全都加到1001.

Elsif (newcustom_ll<=\ newcustom_hl<=\ waitcustom_ll<=waitcustom_ll+1;

后面的waitcustom的与前面的newcustom的程序步骤相同,都是如此。具体步骤见后面的附录。

第 3 页 共 22 页

华东交通大学

新客户 No newcustom_lh<”1001” newcustom_ll< ” 1001 ” No Yes newcustom_hl<”1001” newcustom_lh<=newcustom_lh+1 No newcustom_ll<=”0000” Yes newcustom_hh<”1001” Yes No newcustom_hl<=newcustom_hl+1 newcustom_lh<=”0000” newcustom_ll<=newcustom_ll+1 Yes Yes newcustom_hh<=newcustom_hh+1 newcustom_hl<=”0000” newcustom_ll<=”0000” newcustom_ll<=”0000” newcustom_ll<=”0000” newcustom_ll<=”0000” waitcustom_ll<”1001” No waitcustom_lh<”1001” Yes No waitcustom_hl<”1001” No waitcustom_ll<=waitcustom_ll+1 Yes waitcustom_hh<”1001” Yes waitcustom_lh<=waitcustom_lh+1 No waitcustom_ll<= ” 0000 ” Yes waitcustom_hh<=waitcustom_hh+1 waitcustom_hl<=”0000” waitcustom_hl<=waitcustom_hl+1 Waitcustom_lh<=”0000” 图三:客户取号时各变量计算流程图 第 4 页 共 22 页 waitcustom_ll<=”0000” waitcustom_lh<=”0000” waitcustom_hl<=”0000” waitcustom_hh<=”0000” 华东交通大学

进程P2:当前柜台服务人员号码的计算

当柜台准备好为客人提供服务时,变量newcustom,curcustom和length的值也会随之发生变化,只有在复位rst=1,clk在上升沿并且waiter=1时,即柜台有按钮waiter=1时,curcustom才能加1。该模块实现的主要代码如下:

If rst='0' then curcustom四位都为0

elsif clk'event and clk='1' then ——时钟上升沿 if waiter<='0' then curcustom中四位都为0

elsif waiter<='1' then ——柜台可以为客人服务

if curcustom_ll<\ elsif curcustom_lh<\——顾客编号都小于9999 curcustom_lh<=curcustom_lh+1;curcustom_ll<=\ elsif curcustom_hl<\

curcustom_hl<=curcustom_hl+1;curcustom_lh<=\ elsif curcustom_hh<\

curcustom_hh<=curcustom_hh+1;curcustom_hl<=\ elsif (curcustom_ll<=\ curcustom_hl<=\ curcustom中四位都为0 ——当前顾客的编号都大于9999;全都至为0000

end if; end if; end if;

进程P3:十进制计数器加至7。

随着时钟上升沿的到来,cnt4加1具体程序解释如下:

if rst='0' then cnt4<=0; ————当复位rst=0时,cnt4=0;

elsif tmpclk'event and tmpclk='1' then ————时钟上升沿 if cnt4<8 then cnt4<=cnt4+1; ——cnt4<8,cnt4的值为cnt4加1, else cnt4<=0; 一直加到7; end if; end if;

进程P4:数码管动态扫描电路

8个数码管分别由三个选通信号通过译码器得到的8个信号来选择。当三个选通信号sel<=”000”时,cnt4=0的被选通显示数据,其余的关闭;当sel<=”001”时,cnt4=1的被选通显示数据,其余的关闭.......通过sel的动态变化到达多位数字的显示。

具体程序解释如下:

begin

if rst='0' then q<=(OTHERS=>'0'); elsif clk'event and clk='1' then

q<=q+1; end if; end process p4; selout<=sel;

sel<=\ ——倒数第一个数码管cnt4=0; \ ——倒数第二个数码管cnt4=1; \ ——倒数第三个数码管cnt4=2;

第 5 页 共 22 页

华东交通大学

\ ——倒数第四个数码管cnt4=3; \ ——第四个数码管cnt4=4; \ ——第三个数码管cnt4=5; \ ——第二个数码管cnt4=6 \ ——第一个数码管cnt4=7; \

进程P5:二倍分频电路生成 tmpclk

输入fi为clk,我们所要的tmpclk就为fi/2,

具体的程序如下:

if rst='0' then cnt10<=\ ——复位为0,其他都为0; elsif clk'event and clk='1' then

if cnt10<3 then cnt10<=cnt10+1; else cnt10<=\.......

tmpclk<=cnt10(0);

进程P6:队长length的计算方法

队长=新客户的号码—当前服务的顾客的号码

即:length<=newcustom—curcustom

Length分为个位length_ll、十位length_lh、百位length_hl、千位length_hh。 四位分别计算。。。。。。 具体程序解释如下:

if rst='0' then ——复位为零,其他均设为零; Length四位均为零;

elsif clk'event and clk='1' then ——上升沿到时,队长开始计算; if waiter<='0' then length_ll<=\ length_hl<=\ elsif waiter<='1' then ——柜台已经服务完上一任顾客,有空位时 length_ll<=newcustom_ll-curcustom_ll; ——四位分别相减; length_lh<=newcustom_lh-curcustom_lh; length_hl<=newcustom_hl-curcustom_hl; length_hh<=newcustom_hh-curcustom_hh;

此时,length=length_hh & length_hl & length_lh & length_ll

进程P7:设定各个数码管显示哪一组数据

计算出变量length_ll,length_lh,length_hl,length_hh,curcustom_ll,curcustom_lh,

第 6 页 共 22 页

华东交通大学

curcustom_hl,curcustom_hh的值后,需要一次送至图二中的八位数码管相应位显示。由于该数码管段选位公共,位选位各自独立,需要采用轮询的方式将各段选信号和位选信号配合起来送至数码管的各引脚。 具体程序解释如下:

case cnt4 is

when 0=> selbit <=\ tmpbcdnum<=curcustom_ll; when 1=> selbit <=\

tmpbcdnum<=curcustom_lh; when 2=> selbit <=\

tmpbcdnum<=curcustom_hl; when 3=> selbit <=\

tmpbcdnum<=curcustom_hh; when 4=> selbit <=\ tmpbcdnum<=length_ll; when 5=> selbit <=\ tmpbcdnum<=length_lh; when 6=> selbit <=\ tmpbcdnum<=length_hl; when 7=> selbit <=\ tmpbcdnum<=length_hh; when others=>selbit<=\ end case; 赋完值后,应如下图:

进程P8:四位二进制数转换为七段数码管

设计一个特殊译码器将四位二进制数转换为七段译码。 具体程序解释如下:

case tmpbcdnum is

when \ ——段选位显示“0”的字样; when \ ——段选位显示“1”的字样; when \ ——段选位显示“2”的字样; when \ ——段选位显示“3”的字样; when \ ——段选位显示“4”的字样; when \ ——段选位显示“5”的字样;

第 7 页 共 22 页

华东交通大学

when \ ——段选位显示“6”的字样; when \ ——段选位显示“7”的字样; when \ ——段选位显示“8”的字样; when \ ——段选位显示“9”的字样; when others=>lednum<=\ ——段选位无任何输出; end case;

至此,八位数码管各位待显示的值均已求出,并译码成七段的形式轮询送往该数码管的各段选及位选引脚,数码管上即能动态显示各字段的值。

二:波 形 仿 真 图

(一)波形仿真图设置

(二)当waiter为1时,数码管会随着newcustom的变化而变化。

(三)当waiter为0时,数码管也显示为0。

第 8 页 共 22 页

华东交通大学

(四)管脚绑定

三:下载到单片机实验箱上的实验现象

第 9 页 共 22 页

华东交通大学

将单片机实验箱上的控制waiter的那个开关至于高位,即waiter=1。同时,控制rst的那个开关至为高位,使数码管的变化只随着时钟上升沿的到来而变化,并进行着计数。前四个数码管显示队伍长度;后四个数码管显示柜台的当前顾客服务的号码。随着时钟上升沿的到来,后四个数码管从个位开始增加,如果,waiter一直保持是1,那么队长length的值将不会发生变化。

此程序形成的图形

四:课设收获与体会

我选的《排队电路》这个题目。我和我的同学去了图书馆找了一下午的资料,发现除了自己选得题目外,其他的有很多种。但是,各种书上给的也不是很详细。所以,就找了两本介绍有关课程设计和计数器比较详细的书就回去了。

首先,我是先设计好了程序的流程图。选择一个程序还是选择分成多少个模块来写,觉得分成很多个模块来写的话,程序会很复杂,但是,检查的时候会更加的方便,最后再来一个总的程序,将所有的联系起来,然后再仿真,程序多了就会容易出错。所以,我选择的是用一个程序来写,分成多个进程,只要思路清晰,就不会容易出错的。所以,选择这个方法的前提就是思路一定要清楚。我花了一天多的时间将题目所涵盖的内容分析清楚,并将大概的进程所代表的内容和一部分程序写了出来,画出流程图,比如说图三。

其次,就是将大概的程序从第一步开始一步一步的按照流程图写出来。并在QuartusⅡ软件中建造新的project,编译。。。。。。一开始有很多的错误,甚至由于好久不做实验的原因,在上实验课的时候用的代码也不是自己写的,这也是使自己犯错误的原因之一。都不知道单片机实验箱中的八个七段数码管是有一条线控制的。需要设置一个sel三位选通信号,例如:sel=000时,选得是cnt4=0,既是最后一位数码管。

在输进程序的时候,我的程序共有八个进程,我并不是把所有的程序一下子全部都输进去,我是先输入了一个进程后,在结尾end process 后面再加一个end。再进行编译,这样解决完一个,再加下一个进程进去,这样进行下去的话,就会知道自己的程序到底是在哪出现了问题。慢慢改,慢慢调试,千万不能着急,就会有新的不同的发现。

在编译的时候,出现了将近有九十个warnings,输入设置的是rst、clk、tmpclk还有waiter,结果编译的时候就出现了新的问题,clk和tmpclk之间的关系没办法联系起来。。。。。。后来

第 10 页 共 22 页

华东交通大学

检查发现少了一个分频电路。添加分频电路,还要记得把输入当中的tmpclk去掉,在后面新定义一个tmpclk。用tmpclk=cnt10(0)将tmpclk和clk联系起来。

除了这些问题还有很多老师上课的时候多次强调过的问题:在任一进程的进程说明部分不允许定义信号;“<=”两边的信号的数据类型必须一致;“=”没有赋值的意义;顺序语句只能用在进程中。。。。。。还有还多老师提到的细节,只有亲自动手操作了之后,才了解到自己的基础知识是多么的不牢固,只有在实践中才能提高自己的能力。只是看懂书上的知识,而不进行事实操作,只是会纸上谈兵,而不会进行实战并取得胜利的。我们都深感动手起来遇到的各种问题都要亲自去解决是一件很不容易的事情,同时我们也在实践过程中修复了以往学习的很多漏洞。我们自己经过这次课程设计也得到了不同程度的完善和提升。

通过这次课程设计,使我更加深刻形象的了解了VHDL语言的特别,VHDL语言是一种全方位硬件描述语言,包括系统行为级,寄存器传输级和逻辑门级多个设计层次。应充分利用 VHDL“自顶向下”的设计优点以及层次化的设计概念,层次概念对于设计复杂的数字系统 是非常有用的,它使得我们可以从简单的单元入手,逐渐构成庞大而复杂的系统。通过使用 EDA 编程既方便有快捷的实现了程序本次设计的程序已经在硬件系统上得到了验证。

最后,在经过这次课程设计,自己收获了这么多与老师和同学的帮助是分不开的,不管天气有多冷,老师也会到实验室去辅导我们,晚上本来是老师的休息时间,老师也是会上网登QQ来帮我们解决无数的问题。。。。。。。群里面同学们也好热情的帮助我。在设计时和同学相互交流各自的想法也是很重要的,不同的人对问题的看法总有差异,我们可以从交流中获得不同的思路,其他人的设计一定有比你出色的地方,很好的借鉴,并在大家的商讨中选择最优方案最终一定会得到最好的设计方法。 这些知识在书上是根本就学习不到的。所以,这次课设不仅提高了自己的知识,还使我们同学之间的关系更加的紧密。

参考文献:

[1]《数字电路EDA入门------VHDL程序实例集》 张亦华主编 北京邮电大学出版社

[2]《DA技术与VHDL(第3版)》 潘松 黄继业主编 清华大学出版社

[3]《CPLD/FPGA 应用开发技术与工程实践》 张立科主编 人民邮电出版社

第 11 页 共 22 页

华东交通大学

附 录

VNDL语言程序如下: library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity ordernumsys is port(rst,clk:in std_logic;

selout:out std_logic_vector(2 downto 0); waiter:in bit;

selbit:out std_logic_vector(7 downto 0); lednum:out std_logic_vector(6 downto 0)); end ordernumsys;

architecture behav of ordernumsys is signal newcustom_ll,newcustom_lh,

newcustom_hl,newcustom_hh:std_logic_vector(3 downto 0); signal waitcustom_ll,waitcustom_lh,

waitcustom_hl,waitcustom_hh:std_logic_vector(3 downto 0); signal curcustom_ll,curcustom_lh,

curcustom_hl,curcustom_hh:std_logic_vector(3 downto 0); signal length_ll,length_lh,

length_hl,length_hh:std_logic_vector(3 downto 0); signal tmpbcdnum:std_logic_vector(3 downto 0);

第 12 页 共 22 页

华东交通大学

signal cnt4:integer range 0 to 10 ; signal sel:std_logic_vector(2 downto 0); signal cnt10:std_logic_vector(1 downto 0); signal tmpclk:std_logic; begin

p1:process(clk,rst) begin

if rst='0' then

newcustom_ll<=\ newcustom_hl<=\ waitcustom_ll<=\ waitcustom_hl<=\ elsif clk'event and clk='1' then newcustom_ll<=newcustom_ll+1; if newcustom_ll<\ then newcustom_ll<=newcustom_ll+1; elsif newcustom_lh<\ then newcustom_lh<=newcustom_lh+1; newcustom_ll<=\ elsif newcustom_hl<\ then newcustom_hl<=newcustom_hl+1; newcustom_lh<=\

第 13 页 共 22 页

华东交通大学

elsif newcustom_hh<\ then newcustom_hh<=newcustom_hh+1; newcustom_hl<=\

elsif (newcustom_ll<=\ newcustom_hl<=\ waitcustom_ll<=waitcustom_ll+1; If waitcustom_ll<\ then

waitcustom_ll<=waitcustom_ll+1;newcustom_ll<=\ newcustom_lh<=\ newcustom_hh<=\

elsif waitcustom_lh<\ then

waitcustom_lh<=waitcustom_lh+1; waitcustom_ll<=\ elsif waitcustom_hl<\ then

waitcustom_hl<=waitcustom_hl+1; waitcustom_lh<=\ elsif waitcustom_hh<\ then

waitcustom_hh<=waitcustom_hh+1; waitcustom_hl<=\

elsif(waitcustom_ll<=\ waitcustom_hl<=\ newcustom_ll<=\

第 14 页 共 22 页

华东交通大学

newcustom_hl<=\ waitcustom_ll<=\ waitcustom_hl<=\ end if; end if; end if; end process p1;

p2:process(rst,clk,waiter) begin

if rst='0' then curcustom_ll<=\ curcustom_hl<=\ Elsif clk'event and clk='1' then if waiter<='0' then

curcustom_ll<=\ curcustom_hl<=\ elsif waiter<='1' then ——柜台可以为客人服务; if curcustom_ll<\ then

curcustom_ll<=curcustom_ll+1; elsif curcustom_lh<\

curcustom_lh<=curcustom_lh+1; curcustom_ll<=\ elsif curcustom_hl<\

第 15 页 共 22 页

华东交通大学

curcustom_hl<=curcustom_hl+1; curcustom_lh<=\

elsif curcustom_hh<\——顾客的编号都小 于9999,开始加1; curcustom_hh<=curcustom_hh+1; curcustom_hl<=\

Elsif (curcustom_ll<=\ andcurcustom_hl<=\ curcustom_ll<=\ curcustom_hl<=\ end if;——当前顾客的编号都大于9999;全都至为0000; end if; end if; end process p2; p3:process(rst,tmpclk) begin

if rst='0' then cnt4<=0; ——当复位rst=0时,cnt4=0; elsif tmpclk'event and tmpclk='1' then ——时钟上升沿; if cnt4<8 then

cnt4<=cnt4+1; ——cnt4<8,cnt4的值为cnt4加1,一直加到7; Else cnt4<=0; end if; end if;

第 16 页 共 22 页

华东交通大学

end process p3; free_counter:block

signal q:std_logic_vector(24 downto 0); begin

p4:process(clk,rst) begin

if rst='0' then q<=(OTHERS=>'0'); elsif clk'event and clk='1' then q<=q+1; end if; end process p4; selout<=sel;

sel<=\ ——倒数第一个数码管cnt4=0; \ ——倒数第二个数码管cnt4=1; \ ——倒数第三个数码管cnt4=2; \ ——倒数第四个数码管cnt4=3; \ ——第四个数码管cnt4=4; \ ——第三个数码管cnt4=5; \ ——第二个数码管cnt4=6 \ ——第一个数码管cnt4=7; \end block free_counter; P5:process(rst,clk)

第 17 页 共 22 页

华东交通大学

begin

If rst='0' then cnt10<=\ elsif clk'event and clk='1' then if cnt10<3 then cnt10<=cnt10+1; Else cnt10<=\ end if; end if; end process p5;

tmpclk<=cnt10(1); ——tmpclk是clk的二分频; P6:process(rst,clk,waiter) begin

if rst='0' then ——复位为零,其他均设为零 ; length_ll<=\ length_hl<=\ Elsif clk'event and clk='1' then ——上升沿到时,队长开始计算; if waiter<='0' then length_ll<=\ length_hl<=\ elsif waiter<='1' then ——柜台已经服务完上一任顾客,有空位时,四

位分别相减;

length_ll<=newcustom_ll-curcustom_ll; length_lh<=newcustom_lh-curcustom_lh; length_hl<=newcustom_hl-curcustom_hl; length_hh<=newcustom_hh-curcustom_hh;

第 18 页 共 22 页

华东交通大学

end if; end if; end process p6; P7:process(tmpclk,cnt4) begin

if tmpclk'event and tmpclk='1' and cnt4<8 then case cnt4 is

when 0=> selbit <=\

when 1=> selbit <=\ when 2=> selbit <=\ when 3=> selbit <=\;tmpbcdnum<=curcustom_hh; when 4=> selbit <=\ when 5=> selbit <=\ when 6=> selbit <=\ when 7=> selbit <=\ when others=>selbit<=\ end case; ——给每个数码管赋值见图四; end if; end process p7; P8:process(tmpbcdnum) begin

case tmpbcdnum is

第 19 页 共 22 页

华东交通大学

when \ ——段选位显示“0”的字样; when \ ——段选位显示“1”的字样; when \ ——段选位显示“2”的字样; when \ ——段选位显示“3”的字样; when \ ——段选位显示“4”的字样; when \ ——段选位显示“5”的字样; when \ ——段选位显示“6”的字样; when \ ——段选位显示“7”的字样; when \ ——段选位显示“8”的字样; when \ ——段选位显示“9”的字样; when others=>lednum<=\ ——段选位无任何输出; end case; end process p8; end;

第 20 页 共 22 页

本文来源:https://www.bwwdw.com/article/lpbh.html

Top