名称:单窗口排队机电路设计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--队长 );
源代码
扫描文章末尾的公众号二维码