⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pinlvji.vhd

📁 该程序实现一个频率计
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY pinlvji IS
 PORT(sysclk:IN STD_LOGIC;
      clkin:IN STD_LOGIC;
      seg7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
      scan:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
      );
 END pinlvji;
ARCHITECTURE one OF pinlvji IS
 SIGNAL cnt:STD_LOGIC_VECTOR(26 DOWNTO 0);
 SIGNAL clk_cnt:STD_LOGIC;
 SIGNAL cntp1,cntp2,cntp3,cntp4,cntp5,cntp6,cntp7,cntp8:STD_LOGIC_VECTOR(3 DOWNTO 0);
 SIGNAL cntq1,cntq2,cntq3,cntq4,cntq5,cntq6,cntq7,cntq8:STD_LOGIC_VECTOR(3 DOWNTO 0);
 SIGNAL dat:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN
  PROCESS(sysclk)
   BEGIN
    IF sysclk'event and sysclk='1'THEN
      IF cnt=49999999 THEN
        clk_cnt<=not clk_cnt;
        cnt<=(others=>'0');
      ELSE cnt<=cnt+1;
      END IF;
    END IF;
  END PROCESS;

   PROCESS(clkin)
    BEGIN
     IF clkin'event and clkin='1'THEN
      IF clk_cnt='1'THEN
        IF cntp1="1001"THEN cntp1<="0000";
         IF cntp2="1001"THEN cntp2<="0000";          
          IF cntp3="1001"THEN cntp3<="0000";
           IF cntp4="1001"THEN cntp4<="0000";
            IF cntp5="1001"THEN cntp5<="0000";
             IF cntp6="1001"THEN cntp6<="0000";
              IF cntp7="1001"THEN cntp7<="0000";
               IF cntp8="1001"THEN cntp8<="0000";
               ELSE cntp8<=cntp8+1;END IF;
              ELSE cntp7<=cntp7+1;END IF;
             ELSE cntp6<=cntp6+1;END IF;
            ELSE cntp5<=cntp5+1;END IF;
           ELSE cntp4<=cntp4+1;END IF;
          ELSE cntp3<=cntp3+1;END IF;
         ELSE cntp2<=cntp2+1;END IF;
        ELSE cntp1<=cntp1+1;END IF;
      ELSE
       IF cntp1/="0000" or cntp2/="0000" or cntp3/="0000" or
          cntp4/="0000" or cntp5/="0000" or cntp6/="0000" or
          cntp7/="0000" or cntp8/="0000" THEN
       cntq1<=cntp1;cntq2<=cntp2;cntq3<=cntp3;
       cntq4<=cntp4;cntq5<=cntp5;cntq6<=cntp6;
       cntq7<=cntp7;cntq8<=cntp8;
       cntp1<="0000";cntp2<="0000";cntp3<="0000";
       cntp4<="0000";cntp5<="0000";cntp6<="0000";
       cntp7<="0000";cntp8<="0000";
       END IF;
     END IF;
   END IF;
 END PROCESS;

PROCESS(cnt(10 downto 8),cntq1,cntq2,cntq3,cntq4,cntq5,cntq6,cntq7,cntq8,dat)
 BEGIN
  CASE cnt(10 downto 8) IS
   WHEN "000"=>scan<="11111110";dat<=cntq1;   
   WHEN "001"=>scan<="11111101";dat<=cntq2;
   WHEN "010"=>scan<="11111011";dat<=cntq3; 
   WHEN "011"=>scan<="11110111";dat<=cntq4;
   WHEN "100"=>scan<="11101111";dat<=cntq5;
   WHEN "101"=>scan<="11011111";dat<=cntq6;
   WHEN "110"=>scan<="10111111";dat<=cntq7;
   WHEN "111"=>scan<="01111111";dat<=cntq8; 
   WHEN OTHERS=>NULL;
  END CASE;
END PROCESS;

PROCESS(dat)
 BEGIN
  CASE dat IS
   WHEN"0000"=>seg7<="1000000";
   WHEN"0001"=>seg7<="1111001";
   WHEN"0010"=>seg7<="0100100";
   WHEN"0011"=>seg7<="0110000";
   WHEN"0100"=>seg7<="0011001";
   WHEN"0101"=>seg7<="0010010";
   WHEN"0110"=>seg7<="0000010";
   WHEN"0111"=>seg7<="1111000";
   WHEN"1000"=>seg7<="0000000";
   WHEN"1001"=>seg7<="0010000"; 
   WHEN OTHERS=>seg7<="1111111"; 
  END CASE;
 END PROCESS;
END one;

⌨️ 快捷键说明

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