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

📄 system.vhd

📁 一个8051的VHDL代码
💻 VHD
字号:
-- -------------------------------------------------- Model   :   Top - Level System Component ---- Author  :   Michael Mayer,--             Department of Electrical Engineering--             University of Missouri - Rolla---- Date    :   October 10, 1997---- Limitations :-- ------------------------------------------------ LIBRARY ieee;USE ieee.std_logic_1164.ALL;LIBRARY mc8051;USE mc8051.ALL;ENTITY system IS--    GENERIC (--    );----    PORT (--    );END ENTITY system;ARCHITECTURE struct OF system IS    COMPONENT mc8051 IS--       GENERIC (--          program_filename : string--       );       PORT (          P0      : INOUT std_logic_vector(7 DOWNTO 0);  -- used for data i/o           P1      : INOUT std_logic_vector(7 DOWNTO 0);  -- low-order address byte          P2      : INOUT std_logic_vector(7 DOWNTO 0);  -- high-order address byte          P3      : INOUT std_logic_vector(7 DOWNTO 0);  -- high-order address byte--          rxd     : INOUT std_logic;  --port 3.0, serial port receiver data--          txd     : INOUT std_logic;  --port 3.1, serial port transmitter--          int0_n  : INOUT std_logic;  --port 3.2, interrupt 0 input--          int1_n  : INOUT std_logic;  --port 3.3, interrupt 1 input--          t0      : INOUT std_logic;  --port 3.4, input to counter 0--          t1      : INOUT std_logic;  --port 3.5, input to counter 1--          wr_n    : INOUT std_logic;  --port 3.6, write control, latches port 0 to external--          rd_n    : INOUT std_logic;  --port 3.7, read control, enables external to port 0              rst     : IN    std_logic;  -- low to high causes reset,           xtal1   : IN    std_logic;  -- clock input 1.2 to 12 MHz           xtal2   : OUT   std_logic;  -- output from oscillator (for crystal) -- IGNORED!          ale     : OUT   std_logic;  -- provides Address Latch Enable output,                  -- also receives the program pulse input during programming          psen_n  : OUT   std_logic;  -- program store enable          ea_n    : IN    std_logic   -- when low, access external prog ram.        );    END COMPONENT mc8051;        COMPONENT nvsram IS        GENERIC (            download_filename  : STRING;  -- filename for RAM initial contents            -- File must be Hex format            -- Configuring RAM size            size:      INTEGER :=  65536;     -- number of memory words            addr_width: INTEGER :=  16;    -- number of address bits            width:     INTEGER :=  8;     -- number of bits per memory word                 t_rc      : TIME := 70 ns;    -- read cycle time            t_oe      : TIME := 35 ns;    -- oe to output valid            t_ce      : TIME := 70 ns;    -- ce to output valid            t_wc      : TIME := 70 ns;    -- write cycle time            t_ds      : TIME := 30 ns;    -- data setup time            t_dh1     : TIME := 7 ns      -- data hold time        );             PORT (            addr      : IN    std_logic_vector(addr_width-1 DOWNTO 0); -- address            data      : INOUT std_logic_vector(width-1 DOWNTO 0);  -- data in/out            ce_N      : IN    std_logic;                     -- chip enable            we_N      : IN    std_logic;                     -- write enable            oe_N      : IN    std_logic                      -- output enable        );    END COMPONENT nvsram;     COMPONENT latch373 IS        PORT (            D    : IN  std_logic_vector(7 DOWNTO 0);  -- used for data input            Q    : OUT std_logic_vector(7 DOWNTO 0);  -- used for data input            LE   : IN  std_logic;   -- latch enable            OE_n : IN  std_logic   -- output enable (active low)         );    END COMPONENT latch373;    -- select between behavioral and structural models    --FOR ALL : mc8051 USE ENTITY mc8051.mc8051;   -- structural    FOR ALL : mc8051 USE ENTITY work.mc8051;       -- behavioral    SIGNAL wr_n, rd_n, mem_out     : std_logic;  -- write, read, output enable     SIGNAL p0               : std_logic_vector(7 DOWNTO 0);    SIGNAL clock            : std_logic;    SIGNAL psen_n, ale      : std_logic;    SIGNAL pmem_en_N        : std_logic;    SIGNAL addr             : std_logic_vector(15 DOWNTO 0);    SIGNAL latch_oe_N       : std_logic;    SIGNAL rxd, txd, int0_n, int1_n, t0, t1 : std_logic;    SIGNAL reset            : std_logic;BEGIN   reset <= '1', '0' AFTER 10 us;   clockgen : PROCESS IS    BEGIN       -- 8 MHz clock, or 125 ns period       clock <= '0';       WAIT FOR 62 ns;       clock <= '1';       WAIT FOR 63 ns;   END PROCESS clockgen;   processor : mc8051--       GENERIC MAP (--           program_filename => "code.hex"--       )       PORT MAP (           P0     => p0,           P2     => addr(15 DOWNTO 8),           rst    => reset,            xtal1  => clock,           ea_n   => '0',           P3(0)  => rxd,           P3(1)  => txd,           P3(2)  => int0_n,           P3(3)  => int1_n,           P3(4)  => t0,           P3(5)  => t1,           P3(6)  => wr_n,           P3(7)  => rd_n,           ale    => ale,           psen_n => psen_n    );  pmem_en_N <= '0';  mem_out <= '0' WHEN (psen_N = '0') OR (rd_N = '0') ELSE '1';  external_pmem : nvsram     GENERIC MAP (        download_filename => "sram.hex"     )     PORT MAP (        addr    => addr,        data    => p0,        ce_N  => pmem_en_N,        oe_N  => mem_out,        we_N  => '1'      );  low_addr_latch : latch373      PORT MAP(        D    => p0,        Q    => addr(7 DOWNTO 0),        LE   => ale,        OE_n => '0'      );END ARCHITECTURE struct;

⌨️ 快捷键说明

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