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

📄 comparetor_magnitude.txt

📁 有C编写的红绿灯的控制
💻 TXT
字号:
-- Magnitude Comparator
-- VHDL description of a 4-bit magnitude comparator with expansion inputs
-- first architecture demonstrates use of relational operators on 
-- bit vectors (=,>,<).Second architecture shows sequential behaviour description.
-- Both descriptions do not fully model behaviour of real device for all possible combinations of inputs.
-- download from: www.pld.com.cn & www.fpga.com.cn

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY mag4comp IS
   GENERIC(eqdel,gtdel,ltdel : TIME := 10 ns);    --output delay parameters
   PORT(a,b : IN BIT_VECTOR(3 DOWNTO 0);          --input words, DOWNTO ordering needed for comparison operators
         aeqbin,agtbin,altbin : IN BIT;           --expansion inputs
         aeqbout,agtbout,altbout : OUT BIT);      --outputs
END mag4comp;

ARCHITECTURE dataflow OF mag4comp IS
--this architecture assumes that only one of the expansion inputs
--is active at any time,if more than one expansion input is active,
--more than one output may be active.
BEGIN
   aeqbout <= '1' AFTER eqdel WHEN ((a = b) AND (aeqbin = '1'))
               ELSE '0' AFTER eqdel;
   agtbout <= '1' AFTER gtdel WHEN ((a > b) OR ((a = b) AND (agtbin = '1')))
               ELSE '0' AFTER gtdel;
   altbout <= '1' AFTER ltdel WHEN ((a < b) OR ((a = b) AND (altbin = '1')))
               ELSE '0' AFTER ltdel;
END dataflow;

ARCHITECTURE behaviour OF mag4comp IS
BEGIN
   PROCESS(a,b,aeqbin,agtbin,altbin)
   BEGIN
      IF (a > b) THEN 
         agtbout <= '1' AFTER gtdel;
         aeqbout <= '0' AFTER eqdel;
         altbout <= '0' AFTER ltdel;
      ELSIF (a < b) THEN 
         altbout <= '1' AFTER ltdel;
         aeqbout <= '0' AFTER eqdel;
         agtbout <= '0' AFTER gtdel;
      ELSE --a=b,expansion inputs have priority ordering 
         IF (aeqbin = '1') THEN 
            aeqbout <= '1' AFTER eqdel;
            agtbout <= '0' AFTER gtdel;
            altbout <= '0' AFTER ltdel;
         ELSIF (agtbin = '1') THEN
            agtbout <= '1' AFTER gtdel;
            altbout <= '0' AFTER ltdel;
            aeqbout <= '0' AFTER eqdel;
         ELSIF (altbin = '1') THEN
            agtbout <= '0' AFTER gtdel;
            altbout <= '1' AFTER ltdel;
            aeqbout <= '0' AFTER eqdel;
         ELSE
            agtbout <= '0' AFTER gtdel;
            altbout <= '0' AFTER ltdel;
            aeqbout <= '0' AFTER eqdel;
         END IF;
      END IF;
   END PROCESS;
END behaviour;

⌨️ 快捷键说明

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