单窗口排队机电路设计VHDL代码Quartus仿真

名称:单窗口排队机电路设计VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

单窗口排队机电路设计

在EDA平台下使用VDL语言为工具,设计单窗口排队机电路,给每个新加入排队人员编号,并计算队伍长度。

要求:

1.进入队伍和离开队伍为外界输入信号,当前服务号码和当前队伍长度各由两个数码管显示;    

2.队伍长度初始化后为0,队伍编号由1开始递增并输出

3.队伍长度达到99后,若又有新加入人员,则输出溢出报警

4.每个人员完成业务后由业务员点击完成,对该队伍长度进行刷新

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

分频模块

控制模块

显示模块

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--排队设计
ENTITY line IS
   PORT (
      clk_in    : IN STD_LOGIC;--50MHz
      reset_n   : IN STD_LOGIC;--复位
      in_line   : IN STD_LOGIC;--进队
      out_line  : IN STD_LOGIC;--出队
alarm_led     : OUT STD_LOGIC;    --溢出
      dig_led   : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--数码管位选
      seg_led   : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选
   );
END line;
ARCHITECTURE behave OF line IS
--50MHz分频到1KHz
   COMPONENT divider IS
      PORT (
         clk_in    : IN STD_LOGIC;--50MHz
         clk_1K    : OUT STD_LOGIC--分频得到1Khz
      );
   END COMPONENT;
   --显示模块
   COMPONENT display IS
      PORT (
         clk       : IN STD_LOGIC;
         current_num : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--当前号码
         long_num  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--队长
         dig_led   : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--数码管位选
         seg_led   : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选
      );
   END COMPONENT;
   
   --排队控制模块
   COMPONENT line_ctrl IS
      PORT (
         clk       : IN STD_LOGIC;--1KHz
         reset_n   : IN STD_LOGIC;--复位
         in_line   : IN STD_LOGIC;--进队
         out_line  : IN STD_LOGIC;--出队
alarm_led     : OUT STD_LOGIC;
         current_num : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--当前号码
         long_num  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--队长
      );
   END COMPONENT;
   
   SIGNAL clk_1K        : STD_LOGIC;
   
   SIGNAL current_num   : STD_LOGIC_VECTOR(7 DOWNTO 0);--当前号码
   SIGNAL long_num      : STD_LOGIC_VECTOR(7 DOWNTO 0);--队长
   SIGNAL dig_led_buf : STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL seg_led_buf : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
   dig_led <= dig_led_buf;
   seg_led <= seg_led_buf;
   
   --50MHz分频到1KHz
   i_divider : divider
      PORT MAP (
         clk_in  => clk_in,--50MHz
         clk_1K  => clk_1K--分频得到1Khz
      );
   
   --排队控制模块
   i_line_ctrl : line_ctrl
      PORT MAP (
         clk          => clk_1K,--1KHz
         reset_n      => reset_n,--复位
         in_line      => in_line,--进队
         out_line     => out_line,--出队
alarm_led  => alarm_led,--溢出报警
         current_num  => current_num,--当前号码
         long_num     => long_num--队长
      );
源代码

 扫描文章末尾的公众号二维码

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值