muxcmp.vhd

来自「1.6个数码管动态扫描显示驱动 2.按键模式选择(时分秒)与调整控制 3.用」· VHDL 代码 · 共 62 行

VHD
62
字号
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY muxcmp IS
PORT(HH,HL,MH,ML,SH,SL,AHH,AHL,AMH,AML:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
      s,modes:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
      clk:IN STD_LOGIC;
      muxout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
      alarm:OUT STD_LOGIC);
END muxcmp;

ARCHITECTURE arc OF muxcmp IS
SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
muxout<=q;
  PROCESS(modes)
  VARIABLE num:INTEGER range 0 TO 5;
  BEGIN
  num:=CONV_INTEGER(modes);
  CASE num IS
    WHEN 0|1|2|3=>
         IF(s="000")THEN
           q<=HH;
         ELSIF(s="001")THEN
           q<=HL;
         ELSIF(s="100")THEN
           q<=MH;
         ELSIF(s="101")THEN
           q<=ML;
         ELSIF(s="110")THEN
           q<=SH;
         ELSIF(s="111")THEN
           q<=SL;
         END IF;
    WHEN OTHERS=>
         IF(s="010")THEN
           q<="1010";
         ELSIF(s="011")THEN
           q<="1100";
         ELSIF(s="100")THEN
           q<=AHH;
         ELSIF(s="101")THEN
           q<=AHL;
         ELSIF(s="110")THEN
           q<=AMH;
         ELSIF(s="111")THEN
           q<=AML;
         END IF;
    END CASE;
  END PROCESS;
  
  PROCESS(HH,HL,MH,ML,AHH,AHL,AMH,AML)
  BEGIN
   IF(HH=AHH AND HL=AHL AND MH=AMH AND ML=AML)THEN
     alarm<=clk;
    ELSE alarm<='0';
    END IF;
  END PROCESS;
END arc;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?