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

📄 synplify.vhd

📁 The GRLIB IP Library is an integrated set of reusable IP cores, designed for system-on-chip (SOC) de
💻 VHD
字号:
-------------------------------------------------------------------------------                                                                         ---- Copyright (c) 1997 by Synplicity, Inc.  All rights reserved.            ----                                                                         ---- This source file may be used and distributed without restriction        ---- provided that this copyright statement is not removed from the file     ---- and that any derivative work contains this copyright notice.            ----                                                                         ---- Primitive library for post synthesis simulation                         ---- These models are not intended for efficient synthesis                   ----                                                                         ---------------------------------------------------------------------------------pragma translate_offlibrary ieee;use ieee.std_logic_1164.all;entity prim_counter is    generic (w : integer := 8);    port (        q : buffer std_logic_vector(w - 1 downto 0);        cout : out std_logic;        d : in std_logic_vector(w - 1 downto 0);        cin : in std_logic;        clk : in std_logic;        rst : in std_logic;        load : in std_logic;        en : in std_logic;        updn : in std_logic    );end prim_counter;architecture beh of prim_counter is    signal nextq : std_logic_vector(w - 1 downto 0);begin    nxt: process (q, cin, updn)        variable i : integer;        variable nextc, c : std_logic;    begin        nextc := cin;        for i in 0 to w - 1 loop            c := nextc;            nextq(i) <= c xor (not updn) xor q(i);            nextc := (c and (not updn)) or                  (c and q(i)) or                 ((not updn) and q(i));        end loop;        cout <= nextc;    end process;    ff : process (clk, rst)    begin        if rst = '1' then            q <= (others => '0');        elsif rising_edge(clk) then            q <= nextq;        end if;    end process ff;end beh;library ieee;use ieee.std_logic_1164.all;entity prim_dff is    port (q : out std_logic;          d : in std_logic;          clk : in std_logic;          r : in std_logic := '0';          s : in std_logic := '0');end prim_dff;architecture beh of prim_dff isbegin    ff : process (clk, r, s)    begin        if r = '1' then            q <= '0';        elsif s = '1' then            q <= '1';        elsif rising_edge(clk) then            q <= d;        end if;    end process ff;end beh;library ieee;use ieee.std_logic_1164.all;library ieee;use ieee.std_logic_1164.all;entity prim_sdff is 	port (q : out std_logic;		  d : in std_logic;		  c : in std_logic;		  r : in std_logic := '0';		  s : in std_logic := '0');end prim_sdff;architecture beh of prim_sdff is begin	ff : process(c)	begin		if rising_edge(c) then			if r = '1' then				q <= '0';			elsif s = '1' then				q <= '1';			else				q <= d;			end if;		end if;   end process ff;end beh;library ieee;use ieee.std_logic_1164.all;entity prim_latch is    port (q : out std_logic;          d : in std_logic;          clk : in std_logic;          r : in std_logic := '0';          s : in std_logic := '0');end prim_latch;architecture beh of prim_latch isbegin    q <= '0' when r = '1' else         '1' when s = '1' else         d when clk = '1';end beh;------------------------------------------------------------------------------ Zero ohm resistors: Hardi's solution to connect two inout ports. ------------------------------------------------------------------------------ Copyright (c) 1995, Ben Cohen.   All rights reserved.-- This model can be used in conjunction with the Kluwer Academic book-- "VHDL Coding Styles and Methodologies", ISBN: 0-7923-9598-0-- "VHDL Amswers to Frequently Asked Questions", Kluwer Academic-- which discusses guidelines and testbench design issues.---- This source file for the ZERO Ohm resistor model may be used and-- distributed without restriction provided that this copyright-- statement is not removed from the file and that any derivative work-- contains this copyright notice.-- File name  : Zohm_ea.vhd-- Description: This package, entity, and architecture provide--   the definition of a zero ohm component (A, B).----   The applications of this component include:--     . Normal operation of a jumper wire (data flowing in both directions)----   The component consists of 2 ports:--      . Port A: One side of the pass-through switch--      . Port B: The other side of the pass-through switch--   The model is sensitive to transactions on all ports.  Once a--   transaction is detected, all other transactions are ignored--   for that simulation time (i.e. further transactions in that--   delta time are ignored).----   The width of the pass-through switch is defined through the--   generic "width_g".  The pass-through control and operation--   is defined on a per bit basis (i.e. one process per bit).---- Model Limitations and Restrictions:--   Signals asserted on the ports of the error injector should not have--   transactions occuring in multiple delta times because the model--   is sensitive to transactions on port A, B ONLY ONCE during--   a simulation time.  Thus, once fired, a process will--   not refire if there are multiple transactions occuring in delta times.--   This condition may occur in gate level simulations with--   ZERO delays because transactions may occur in multiple delta times.------ Acknowledgement: The author thanks Steve Schoessow and Johan Sandstrom--   for their contributions and discussions in the enhancement and--   verification of this model.----=================================================================-- Revisions:--   Date   Author       Revision  Comment-- 07-13-95 Ben Cohen    Rev A     Creation--          VhdlCohen@aol.com-------------------------------------------------------------library IEEE;  use IEEE.Std_Logic_1164.all;entity ZeroOhm1 is  port    (A : inout Std_Logic;     B : inout Std_Logic     );end ZeroOhm1;architecture ZeroOhm1_a of ZeroOhm1 is--    attribute syn_black_box : boolean;--    attribute syn_feedthrough : boolean;--    attribute syn_black_box of all : architecture is true;--    attribute syn_feedthrough of all : architecture is true;begin  ABC0_Lbl: process    variable ThenTime_v : time;  begin    wait on A'transaction, B'transaction                      until ThenTime_v /= now;    -- Break    ThenTime_v := now;    A <= 'Z';    B <= 'Z';    wait for 0 ns;    -- Make    A <= B;    B <= A;     end process ABC0_Lbl;end ZeroOhm1_a;-------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;library grlib;use grlib.stdlib.all;entity prim_ramd isgeneric (   data_width : integer := 4;    addr_width : integer := 5);port (    dout : out std_logic_vector(data_width-1 downto 0);    aout : in std_logic_vector(addr_width-1 downto 0);    din  : in std_logic_vector(data_width-1 downto 0);    ain : in std_logic_vector(addr_width-1 downto 0);    we   : in std_logic;    clk  : in std_logic);end prim_ramd;architecture beh of prim_ramd isconstant depth : integer := 2** addr_width;type mem_type is array (depth-1 downto 0) of std_logic_vector (data_width-1 downto 0);signal mem: mem_type;begin  dout <= mem(conv_integer(aout));process (clk)    begin        if rising_edge(clk) then                if (we = '1') then                mem(conv_integer(ain)) <= din;            end if;        end if;end process;end beh ;library ieee;use ieee.std_logic_1164.all;package components is    component prim_counter        generic (w : integer);        port (            q : buffer std_logic_vector(w - 1 downto 0);            cout : out std_logic;            d : in std_logic_vector(w - 1 downto 0);            cin : in std_logic;            clk : in std_logic;            rst : in std_logic;            load : in std_logic;            en : in std_logic;            updn : in std_logic        );    end component;    component prim_dff        port (q : out std_logic;              d : in std_logic;              clk : in std_logic;              r : in std_logic := '0';              s : in std_logic := '0');    end component;	component prim_sdff		port(q : out std_logic;			 d : in std_logic;			 c : in std_logic;			 r : in std_logic := '0';			 s : in std_logic := '0');	end component;    component prim_latch        port (q : out std_logic;              d : in std_logic;              clk : in std_logic;              r : in std_logic := '0';              s : in std_logic := '0');    end component;    component prim_ramd is    generic (        data_width : integer := 4;        addr_width : integer := 5);    port (        dout : out std_logic_vector(data_width-1 downto 0);        aout : in std_logic_vector(addr_width-1 downto 0);        din  : in std_logic_vector(data_width-1 downto 0);        ain : in std_logic_vector(addr_width-1 downto 0);        we   : in std_logic;        clk  : in std_logic);    end component;end components;-- pragma translate_on

⌨️ 快捷键说明

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