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

📄 tech_fs90.vhd

📁 ARM7的源代码
💻 VHD
📖 第 1 页 / 共 2 页
字号:
use IEEE.std_logic_1164.all;package tech_fs90_syn is-- 128x25 sync ramcomponent SA108019   port (A0, A1, A2, A3, A4, A5, A6, DI0, DI1, DI2, DI3, DI4, DI5,          DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16,          DI17, DI18, DI19, DI20, DI21, DI22, DI23, DI24, CK, CS, OE,          WEB : in std_logic;         DO0, DO1, DO2, DO3, DO4, DO5, DO6, DO7, DO8, DO9, DO10,         DO11, DO12, DO13, DO14, DO15, DO16, DO17, DO18, DO19, DO20, DO21,         DO22, DO23, DO24: out std_logic        );end component;-- 512x32 sync ramcomponent SU004020   port (A0, A1, A2, A3, A4, A5, A6, A7, A8, DI0, DI1, DI2, DI3, DI4, DI5,          DI6, DI7, DI8, DI9, DI10, DI11, DI12, DI13, DI14, DI15, DI16,          DI17, DI18, DI19, DI20, DI21, DI22, DI23, DI24, DI25, DI26, DI27,	 DI28, DI29, DI30, DI31, CK, CS, OE, WEB : in std_logic;         DO0, DO1, DO2, DO3, DO4, DO5, DO6, DO7, DO8, DO9, DO10,         DO11, DO12, DO13, DO14, DO15, DO16, DO17, DO18, DO19, DO20, DO21,         DO22, DO23, DO24, DO25, DO26, DO27, DO28, DO29, DO30, DO31: out std_logic        );end component;-- 2-port sync ramcomponent SW204420   port (A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, B2, B3, B4, B5, B6,         B7, DI0, DI1, DI2, DI3, DI4, DI5, DI6, DI7, DI8, DI9, DI10,         DI11, DI12, DI13, DI14, DI15, DI16, DI17, DI18, DI19, DI20, DI21,         DI22, DI23, DI24, DI25, DI26, DI27, DI28, DI29, DI30, DI31,         CKA, CKB, CSA, CSB, OE,         WEB : in std_logic;         DO0, DO1, DO2, DO3, DO4, DO5, DO6, DO7, DO8, DO9, DO10,         DO11, DO12, DO13, DO14, DO15, DO16, DO17, DO18, DO19, DO20, DO21,         DO22, DO23, DO24, DO25, DO26, DO27, DO28, DO29, DO30, DO31: out std_logic        );end component;-- in-padcomponent uyfaa port (  o   : out std_logic;   i   : in std_logic;  pu  : in std_logic;   pd  : in std_logic;   smt : in std_logic); end component; -- out-padcomponent vyfa2gsa port (  o   : out  std_logic;  i   : in  std_logic;  e   : in  std_logic;  e2  : in  std_logic;  e4  : in  std_logic;  e8  : in  std_logic;  sr  : in  std_logic);end component;-- io-padcomponent wyfa2gsa port (  o   : out  std_logic;  i   : in  std_logic;  io  : inout  std_logic;  e   : in  std_logic;  e2  : in  std_logic;  e4  : in  std_logic;  e8  : in  std_logic;  sr  : in  std_logic;  pu  : in std_logic;   pd  : in std_logic;   smt : in std_logic); end component;end;-------------------------------------------------------------------- sync ram generator --------------------------------------------------------------------------------------------------------------library IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_syncram is  generic ( abits : integer := 10; dbits : integer := 8 );  port (    address  : in std_logic_vector(abits -1 downto 0);    clk      : in std_logic;    datain   : in std_logic_vector(dbits -1 downto 0);    dataout  : out std_logic_vector(dbits -1 downto 0);    enable  : in std_logic;    write    : in std_logic  );end;architecture rtl of fs90_syncram is  signal wr   : std_logic;  signal a    : std_logic_vector(19 downto 0);  signal d, o : std_logic_vector(34 downto 0);  constant synopsys_bug : std_logic_vector(37 downto 0) := (others => '0');  signal we, vcc : std_logic;begin  vcc <= '1';  wr <= not write;   a(abits -1 downto 0) <= address;   a(abits+1 downto abits) <= synopsys_bug(abits+1 downto abits);  d(dbits -1 downto 0) <= datain;   d(dbits+1 downto dbits) <= synopsys_bug(dbits+1 downto dbits);  dataout <= o(dbits -1 downto 0);  a7d25 : if (abits <= 7) and (dbits <= 25) generate    id0 : SA108019 port map (      a(0), a(1), a(2), a(3), a(4), a(5), a(6),      d(0), d(1), d(2), d(3), d(4), d(5), d(6), d(7), d(8),      d(9), d(10), d(11), d(12), d(13), d(14), d(15), d(16),      d(17), d(18), d(19), d(20), d(21), d(22), d(23), d(24),      clk, enable, vcc, wr,      o(0), o(1), o(2), o(3), o(4), o(5), o(6), o(7), o(8),      o(9), o(10), o(11), o(12), o(13), o(14), o(15), o(16),      o(17), o(18), o(19), o(20), o(21), o(22), o(23), o(24));  end generate;  a9d32 : if (abits = 9) and (dbits = 32) generate    id0 : SU004020 port map (      a(0), a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8),      d(0), d(1), d(2), d(3), d(4), d(5), d(6), d(7), d(8),      d(9), d(10), d(11), d(12), d(13), d(14), d(15), d(16),      d(17), d(18), d(19), d(20), d(21), d(22), d(23), d(24),      d(25), d(26), d(27), d(28), d(29), d(30), d(31),      clk, enable, vcc, wr,      o(0), o(1), o(2), o(3), o(4), o(5), o(6), o(7), o(8),      o(9), o(10), o(11), o(12), o(13), o(14), o(15), o(16),      o(17), o(18), o(19), o(20), o(21), o(22), o(23), o(24),      o(25), o(26), o(27), o(28), o(29), o(30), o(31));  end generate;end rtl;-------------------------------------------------------------------- regfile generator  --------------------------------------------------------------------------------------------------------------LIBRARY ieee;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use work.leon_config.all;use work.leon_iface.all;use work.tech_fs90_syn.all;entity fs90_regfile is  generic (     abits : integer := 8;    dbits : integer := 32;    words : integer := 128  );  port (    rst      : in std_logic;    clk      : in clk_type;    clkn     : in clk_type;    rfi      : in rf_in_type;    rfo      : out rf_out_type);end;architecture rtl of fs90_regfile issignal d, q1, q2 : std_logic_vector(39 downto 0);signal vcc, wen : std_logic;signal ra1, ra2, wa : std_logic_vector(12 downto 0);begin  wen <= not rfi.wren; vcc <= '1';  ra1(abits-1 downto 0) <= rfi.rd1addr;  ra1(12 downto abits) <= (others => '0');  ra2(abits-1 downto 0) <= rfi.rd2addr;  ra2(12 downto abits) <= (others => '0');  wa(abits-1 downto 0) <= rfi.wraddr;  wa(12 downto abits) <= (others => '0');  rfo.data1 <= q1(dbits-1 downto 0);  rfo.data2 <= q2(dbits-1 downto 0);  d(RDBITS-1 downto 0) <= rfi.wrdata;  dp136x32 : if (words = 136) and (dbits = 32) generate    u0: SW204420 port map (      ra1(0), ra1(1), ra1(2), ra1(3), ra1(4), ra1(5), ra1(6), ra1(7),      wa(0), wa(1), wa(2), wa(3), wa(4), wa(5), wa(6), wa(7),      d(0), d(1), d(2), d(3), d(4), d(5), d(6), d(7), d(8),      d(9), d(10), d(11), d(12), d(13), d(14), d(15), d(16),      d(17), d(18), d(19), d(20), d(21), d(22), d(23), d(24),      d(25), d(26), d(27), d(28), d(29), d(30), d(31),      clkn, clkn, rfi.ren1, rfi.wren, vcc, wen,      q1(0), q1(1), q1(2), q1(3), q1(4), q1(5), q1(6), q1(7), q1(8),      q1(9), q1(10), q1(11), q1(12), q1(13), q1(14), q1(15), q1(16),      q1(17), q1(18), q1(19), q1(20), q1(21), q1(22), q1(23), q1(24),      q1(25), q1(26), q1(27), q1(28), q1(29), q1(30), q1(31));    u1: SW204420 port map (      ra2(0), ra2(1), ra2(2), ra2(3), ra2(4), ra2(5), ra2(6), ra2(7),      wa(0), wa(1), wa(2), wa(3), wa(4), wa(5), wa(6), wa(7),      d(0), d(1), d(2), d(3), d(4), d(5), d(6), d(7), d(8),      d(9), d(10), d(11), d(12), d(13), d(14), d(15), d(16),      d(17), d(18), d(19), d(20), d(21), d(22), d(23), d(24),      d(25), d(26), d(27), d(28), d(29), d(30), d(31),      clkn, clkn, rfi.ren2, rfi.wren, vcc, wen,      q2(0), q2(1), q2(2), q2(3), q2(4), q2(5), q2(6), q2(7), q2(8),      q2(9), q2(10), q2(11), q2(12), q2(13), q2(14), q2(15), q2(16),      q2(17), q2(18), q2(19), q2(20), q2(21), q2(22), q2(23), q2(24),      q2(25), q2(26), q2(27), q2(28), q2(29), q2(30), q2(31));  end generate;end;-------------------------------------------------------------------- mapping generic pads on tech pads ----------------------------------------------------------------------------------------------------- input padlibrary IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_inpad is   port (pad : in std_logic; q : out std_logic);end; architecture syn of fs90_inpad is signal gnd : std_logic;begin   gnd <= '0';  i0 : uyfaa port map (q, pad, gnd, gnd, gnd);end;-- input schmitt padlibrary IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_smpad is port (pad : in std_logic; q : out std_logic); end; architecture syn of fs90_smpad is signal gnd, vcc : std_logic;begin   gnd <= '0'; vcc <= '1';  i0 : uyfaa port map (q, pad, gnd, gnd, vcc);end;-- output padslibrary IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_outpad is   generic (drive : integer := 1);  port (d : in std_logic; pad : out std_logic);end; architecture syn of fs90_outpad is signal gnd, vcc : std_logic;begin   gnd <= '0'; vcc <= '1';  d1 : if drive = 1 generate    u0 : vyfa2gsa port map (pad, d, vcc, vcc, gnd, gnd, gnd);  end generate;  d2 : if drive = 2 generate    u0 : vyfa2gsa port map (pad, d, vcc, gnd, vcc, gnd, gnd);  end generate;  d3 : if drive = 3 generate    u0 : vyfa2gsa port map (pad, d, vcc, gnd, gnd, vcc, gnd);  end generate;  d4 : if drive > 3 generate    u0 : vyfa2gsa port map (pad, d, vcc, gnd, vcc, vcc, gnd);  end generate;end;-- tri-state output pads with pull-uplibrary IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_toutpadu is   generic (drive : integer := 1);  port (d, en : in  std_logic; pad : out  std_logic);end; architecture syn of fs90_toutpadu is signal gnd, vcc, q, ipad, eni : std_logic;begin   gnd <= '0'; vcc <= '1'; pad <= ipad; eni <= not en;  d1 : if drive = 1 generate    u0 : wyfa2gsa port map (q, d, ipad, eni, vcc, gnd, gnd, gnd, vcc, gnd, gnd);  end generate;  d2 : if drive = 2 generate    u0 : wyfa2gsa port map (q, d, ipad, eni, gnd, vcc, gnd, gnd, vcc, gnd, gnd);  end generate;  d3 : if drive = 3 generate    u0 : wyfa2gsa port map (q, d, ipad, eni, gnd, gnd, vcc, gnd, vcc, gnd, gnd);  end generate;  d4 : if drive > 3 generate    u0 : wyfa2gsa port map (q, d, ipad, eni, gnd, vcc, vcc, gnd, vcc, gnd, gnd);  end generate;end;-- bidirectional padlibrary IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_iopad is  generic (drive : integer := 1);  port ( d, en : in std_logic; q : out std_logic; pad : inout std_logic);end;architecture syn of fs90_iopad is signal gnd, vcc, eni : std_logic;begin   gnd <= '0'; vcc <= '1'; eni <= not en;  d1 : if drive = 1 generate    u0 : wyfa2gsa port map (q, d, pad, eni, vcc, gnd, gnd, gnd, gnd, gnd, gnd);  end generate;  d2 : if drive = 2 generate    u0 : wyfa2gsa port map (q, d, pad, eni, gnd, vcc, gnd, gnd, gnd, gnd, gnd);  end generate;  d3 : if drive = 3 generate    u0 : wyfa2gsa port map (q, d, pad, eni, gnd, gnd, vcc, gnd, gnd, gnd, gnd);  end generate;  d4 : if drive > 3 generate    u0 : wyfa2gsa port map (q, d, pad, eni, gnd, vcc, vcc, gnd, gnd, gnd, gnd);  end generate;end;-- bidirectional schmitt padlibrary IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_smiopad is  generic (drive : integer := 1);  port ( d, en : in std_logic; q : out std_logic; pad : inout std_logic);end;architecture syn of fs90_smiopad is signal gnd, vcc, eni : std_logic;begin   gnd <= '0'; vcc <= '1'; eni <= not en;  d1 : if drive = 1 generate    u0 : wyfa2gsa port map (q, d, pad, eni, vcc, gnd, gnd, gnd, gnd, gnd, vcc);  end generate;  d2 : if drive = 2 generate    u0 : wyfa2gsa port map (q, d, pad, eni, gnd, vcc, gnd, gnd, gnd, gnd, vcc);  end generate;  d3 : if drive = 3 generate    u0 : wyfa2gsa port map (q, d, pad, eni, gnd, gnd, vcc, gnd, gnd, gnd, vcc);  end generate;  d4 : if drive > 3 generate    u0 : wyfa2gsa port map (q, d, pad, eni, gnd, vcc, vcc, gnd, gnd, gnd, vcc);  end generate;end;-- bidirectional pad with open-drainlibrary IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_iodpad is  generic (drive : integer := 1);  port ( d : in std_logic; q : out std_logic; pad : inout std_logic);end;architecture syn of fs90_iodpad is signal gnd, vcc, eni : std_logic;begin   gnd <= '0'; vcc <= '1'; eni <= not d;  d1 : if drive = 1 generate    u0 : wyfa2gsa port map (q, gnd, pad, eni, vcc, gnd, gnd, gnd, gnd, gnd, gnd);  end generate;  d2 : if drive = 2 generate    u0 : wyfa2gsa port map (q, gnd, pad, eni, gnd, vcc, gnd, gnd, gnd, gnd, gnd);  end generate;  d3 : if drive = 3 generate    u0 : wyfa2gsa port map (q, gnd, pad, eni, gnd, gnd, vcc, gnd, gnd, gnd, gnd);  end generate;  d4 : if drive > 3 generate    u0 : wyfa2gsa port map (q, gnd, pad, eni, gnd, vcc, vcc, gnd, gnd, gnd, gnd);  end generate;end;-- output pad with open-drainlibrary IEEE;use IEEE.std_logic_1164.all;use work.tech_fs90_syn.all;entity fs90_odpad is  generic (drive : integer := 1);  port (d : in std_logic; pad : out std_logic);end;architecture syn of fs90_odpad is signal gnd, vcc, eni : std_logic;begin   gnd <= '0'; vcc <= '1'; eni <= not d;  d1 : if drive = 1 generate    u0 : vyfa2gsa port map (pad, gnd, eni, vcc, gnd, gnd, gnd);  end generate;  d2 : if drive = 2 generate    u0 : vyfa2gsa port map (pad, gnd, eni, gnd, vcc, gnd, gnd);  end generate;  d3 : if drive = 3 generate    u0 : vyfa2gsa port map (pad, gnd, eni, gnd, gnd, vcc, gnd);  end generate;  d4 : if drive > 3 generate    u0 : vyfa2gsa port map (pad, gnd, eni, gnd, vcc, vcc, gnd);  end generate;end;

⌨️ 快捷键说明

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