EVM5509 CPLD译码代码(DSP+CPLD)

2019-07-23 14:03发布

[ 本帖最后由 zhangmangui 于 2016-4-4 21:59 编辑 ] CPLD.rar (4.41 KB, 下载次数: 8) 2016-4-4 21:59 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
zhangmangui
1楼-- · 2019-07-23 16:05
------------------------------------------------------------------------------------
-- $Archive::                                                                      $
-- $Revision::                                                                     $
-- $Date::                                                                         $
-- $Author::                                                                       $
--
--
--
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
-- Start the real code                  
------------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
--
--
--   

entity c5509aevm is
  port
  (  
    CLKIN        : in    std_logic; -- 20 MHz clock in

    PONRSn       : in    std_logic; -- Power on reset from voltage supervisor
    PON_CORE     : in    std_logic; -- Core Power Status
    PUSHBRS      : in    std_logic; -- Push button reset
    USB_DSP_RS   : in    std_logic;
          USB_PORSTn   : out    std_logic;

    -- DSP Memory interface signals
    DSP_DQ       : inout std_logic_vector( 7 downto 0 );    -- DSP Data bus
          DSP_ADDR     : in    std_logic_vector( 4 downto 1 );    -- DSP Address bus
                DSP_ADDR20   : in    std_logic;                         -- Upper DSP Address
                DSP_ADDR19   : in    std_logic;  
                DSP_ADDR18   : in    std_logic;  
                DSP_ADDR17   : in    std_logic;   
         
    DSP_WEn      : in    std_logic;                         -- DSP Write strobe
    DSP_REn      : in    std_logic;                         -- DSP Read strobe
    DSP_OEn      : in    std_logic;                         -- DSP Output enable

    DSP_RSn      : out   std_logic;                         -- DSP Reset
               
          DSP_RS_LEDn  : out   std_logic;                         -- DSP Reset LED
          FLASH_CEn    : out   std_logic;
    FLASH_RSn    : out   std_logic;

    -- DSP Memory Chip Select signals
    DSP_CS3n   : in    std_logic;                         -- DSP DC Chip select  
    DSP_CS2n   : in    std_logic;                                                                                                 -- DSP DC Chip Select 2        
    DSP_CS1n   : in    std_logic;                         -- Flash Chip Select 2

    -- DSP GPIO Lines
                DSP_GP6           : in    std_logic;
    DSP_GP5           : in    std_logic;  
                DSP_TINOUT_0    : inout std_logic;

          DSP_INT0         : out    std_logic;
                DSP_INT1         : out    std_logic;
                DSP_INT3         : out    std_logic;
               
                -- User/Board Support
    USER_SW      : in    std_logic_vector( 3 downto 0 );
    USER_LED     : out   std_logic_vector( 3 downto 0 );

                -- NI Interface

                DIGIO1        :out  std_logic;
                DIGIO0        :out  std_logic;

    -- LCD Interface

                oLCD_A0       : out  std_logic;
                oLCD_SI       : out  std_logic;
                oLCD_SCK      : out  std_logic;
                oLCD_RESET   : out  std_logic;


                 -- Daughter Card Support
    DC_STAT      : in    std_logic_vector( 1 downto 0 );   -- DC Status
    DC_CNTL      : out   std_logic_vector( 1 downto 0 );   -- DC Control
    DC_DETn      : in    std_logic;                        -- DC Detect
    DC_POR       : in    std_logic;
    DC_RESETn    : out   std_logic;                        -- DC Reset
    DC_DBUF_OEn  : out   std_logic;                        -- DC Data buffer output enable
    DC_CNTL_OEn  : out   std_logic;                        -- DC Control buffer enable
    DC_DBUF_DIR  : out   std_logic;
    X_TIN0      : inout    std_logic;
                X_TOUT0     : inout   std_logic;

                -- Daughter Card Interface
                DC_INT3n     : in   std_logic;
          DC_INT1n     : in   std_logic;
          DC_INT0n     : in   std_logic;
       

    --  Voltage Control
                CORE_VCNTL0 : out   std_logic;
                CORE_VCNTL1 : out   std_logic;

    --McBSP Multiplexer Control

    MCBSP_ONBD_SEL2   : out   std_logic;
                MCBSP_EXP_SEL2    : out   std_logic;
    MCBSP_ONBD_SEL0   : out   std_logic;

    --
               
    WAKE_UP_SW        : in std_logic);

                 ----
   --                CPLD_Option       : in    std_logic );
end c5509aevm;

-----------------------------------------------------------------------------------
-- Include standard librariess
-----------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
-- use work.std_arith.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;

-----------------------------------------------------------------------------------
-- Include fpga specifics here if required.  
-- act3  is for Actel 54sx devices.  We normally use this for the hardwired
-- clock definition.
-----------------------------------------------------------------------------------
-- library act3;
-- use act3.components.all;

architecture behavior_c5509aevm of c5509aevm is      

constant CPLD_VERSION         : std_logic_vector(3 downto 0)  := "0000";
constant PWB_REV              : std_logic_vector(3 downto 0)  := "0000";

-----------------------------------------------------------------------------------
-- Add local components in here  
-----------------------------------------------------------------------------------
--component MyComponent
--port
--(
--);
--end component;

-----------------------------------------------------------------------------------
-- Add signals
-----------------------------------------------------------------------------------

-- CPLD Register signals

signal    MclkDiv         : std_logic_vector( 1 downto 0 );
signal    LcdClkEn           : std_logic;

signal    LcdA0              : std_logic;
signal    LcdD               : std_logic_vector( 7 downto 0 );
signal    LcdRequest         : std_logic;
signal    LcdStart           : std_logic;
signal    LCD_BUSY           : std_logic;

signal    LcdMuxD            : std_logic;
signal    LcdShiftCnt        : std_logic_vector( 2 downto 0 );
signal    LcdSckOn           : std_logic;


signal    REG_CEn         : std_logic;
signal    CpldReg0        : std_logic_vector( 7 downto 0 );  
signal    CpldReg1        : std_logic_vector( 7 downto 0 );  
signal    CpldReg2        : std_logic_vector( 7 downto 0 );  
signal    CpldReg3        : std_logic_vector( 7 downto 0 );  
signal    CpldReg4        : std_logic_vector( 7 downto 0 );  
signal    CpldReg5        : std_logic_vector( 7 downto 0 );  
signal    CpldReg6        : std_logic_vector( 7 downto 0 );  
signal    CpldReg7        : std_logic_vector( 7 downto 0 );  
signal    CpldReg8        : std_logic_vector( 7 downto 0 );  
signal    CpldReg9        : std_logic_vector( 7 downto 0 );  
signal    CpldReg10       : std_logic_vector( 7 downto 0 );  
signal    MuxD            : std_logic_vector( 7 downto 0 );

signal    ChipEnables     : std_logic_vector( 10 downto 0 );
signal    CpldRegCs0      : std_logic;
signal    CpldRegCs1      : std_logic;
signal    CpldRegCs2      : std_logic;
signal    CpldRegCs3      : std_logic;
signal    CpldRegCs4      : std_logic;
signal    CpldRegCs5      : std_logic;
signal    CpldRegCs6      : std_logic;
signal    CpldRegCs7      : std_logic;
signal    CpldRegCs8      : std_logic;
signal    CpldRegCs9      : std_logic;
signal    CpldRegCs10     : std_logic;

signal    POWER_UP        :std_logic;  

signal    SystemResetn    : std_logic;  
signal    CpldClkOut      : std_logic;

-----------------------------------------------------------------------------------
-- The implementation
-----------------------------------------------------------------------------------

begin

-----------------------------------------------------------------------------------
-- Actel specific definition for the hardwired clock "hclk"
-----------------------------------------------------------------------------------
-- u1: HCLKBUF port map( PAD => iMasterClockIn, Y => oMasterClockIn );

-----------------------------------------------------------------------------------
-- Map the other components
-----------------------------------------------------------------------------------
--u2: my_component port map ( ComponentSignalName => SignalConnection, ... );


-----------------------------------------------------------------------------------
-- Now define the logic
-----------------------------------------------------------------------------------

  -- Generate a reset from the three sources.  May need to deglitch based on
  -- external implementation.
  --      
  -- Generate a CPLD clockout from clock input.  This is a place holder just in
  -- case we need it later.
  --
  SystemResetn <= '0' when ( PONRSn     = '0' ) or
                           (PUSHBRS     = '1' ) or
                                                                                                         (USB_DSP_RS   = '0' )
                           else '1';



  DSP_RSn      <= '0' when SystemResetn = '0' else '1';

        DSP_RS_LEDn  <= '0' when SystemResetn = '0' else '1';

        FLASH_RSn    <= '0' when SystemResetn = '0' else '1';


USB_PORSTn <= '0' when PONRSn = '0'  
                                                                                else '1';




  FLASH_CEn    <= '0' when (( DSP_CS1n = '0' and DSP_ADDR20 = '0' ) or
                                  ( DSP_CS1n = '0' and DSP_ADDR20 = '1' and DSP_ADDR19 = '0') or
                                                                                                                ( DSP_CS1n = '0' and DSP_ADDR20 = '1' and DSP_ADDR18 = '0') or
                                                                                                                ( DSP_CS1n = '0' and DSP_ADDR20 = '1' and DSP_ADDR17 = '0'))
                                 else '1';

                                                                                                         



  REG_CEn     <= '0' when ( DSP_CS1n = '0' and
                            DSP_ADDR20 = '1' and DSP_ADDR19 = '1' and DSP_ADDR18 = '1' and DSP_ADDR17 = '1' )
                                                 else '1';



  --#########################################################################
  -- Generic register addresss decode and register chip select generation.
  -- VHDL compiler will reduce any unused logic so we can be verbose.
        --
        process(  DSP_ADDR )
        begin
                case DSP_ADDR( 4 downto 1) is
            when "0000"  => ChipEnables  <= "00000000001";
      when "0001"  => ChipEnables  <= "00000000010";
      when "0010"  => ChipEnables  <= "00000000100";
      when "0011"  => ChipEnables  <= "00000001000";     
      when "0100"  => ChipEnables  <= "00000010000";   
      when "0101"  => ChipEnables  <= "00000100000";  
      when "0110"  => ChipEnables  <= "00001000000";   
      when "0111"  => ChipEnables  <= "00010000000";  
      when "1000"  => ChipEnables  <= "00100000000";
                        when "1001"  => ChipEnables  <= "01000000000";
                        when "1010"  => ChipEnables  <= "10000000000";

                        when others => ChipEnables   <= "00000000000";
                end case;
        end process;     

  CpldRegCs0  <= '1' when ChipEnables(0)  = '1' and REG_CEn = '0'  else '0';
  CpldRegCs1  <= '1' when ChipEnables(1)  = '1' and REG_CEn = '0'  else '0';
  CpldRegCs2  <= '1' when ChipEnables(2)  = '1' and REG_CEn = '0'  else '0';
  CpldRegCs3  <= '1' when ChipEnables(3)  = '1' and REG_CEn = '0'  else '0';
  CpldRegCs4  <= '1' when ChipEnables(4)  = '1' and REG_CEn = '0'  else '0';
  CpldRegCs5  <= '1' when ChipEnables(5)  = '1' and REG_CEn = '0'  else '0';
  CpldRegCs6  <= '1' when ChipEnables(6)  = '1' and REG_CEn = '0'  else '0';
  CpldRegCs7  <= '1' when ChipEnables(7)  = '1' and REG_CEn = '0'  else '0';
        CpldRegCs8  <= '1' when ChipEnables(8)  = '1' and REG_CEn = '0'  else '0';
        CpldRegCs9  <= '1' when ChipEnables(9)  = '1' and REG_CEn = '0'  else '0';
        CpldRegCs10 <= '1' when ChipEnables(10) = '1' and REG_CEn = '0'  else '0';
       
       
       
       
       
        -- #########################################################################
  -- Generate logic for each CPLD register and assign it's write, read, and
  -- pin values if necessary.
  --
  -- All CPLD register writes occur on the rising edge DSP write strobe.
        --  
         
        -- ========================================================================
        -- REG 0: User Register
        -- Bit 3-0   Led 3-0
        -- Bit 7-4   Switch 3-0
  process( SystemResetn, DSP_WEn, CpldRegCs0, DSP_DQ )
  begin
                if SystemResetn = '0' then
        CpldReg0(3 downto 0 ) <= "0000";
                elsif DSP_WEn'event and DSP_WEn = '1' then   
                  if( CpldRegCs0 = '1' ) then
                    CpldReg0( 3 downto 0 ) <= DSP_DQ( 3 downto 0 );
                  end if;
                end if;
        end process;  

  CpldReg0(7 downto 4 )  <= USER_SW( 3 downto 0 );
  USER_LED( 3 downto 0 ) <= not CpldReg0(3 downto 0 );  

  -- ========================================================================
        -- REG 1: DC Register
        -- Bit 1-0   DC_CNTL 1-0
        -- Bit 2     RESERVED
        -- Bit 3     DC_RESET
        -- Bit 5-4   DC_STAT 1-0
        -- Bit 6     RESERVED
        -- Bit 7     DC_DETECT
        --
  process( SystemResetn, DSP_WEn, CpldRegCs1, DSP_DQ )
  begin
                if SystemResetn = '0' then
        CpldReg1(1 downto 0 ) <= "00";  
                          CpldReg1(3) <= '0';

                elsif DSP_WEn'event and DSP_WEn = '1' then   
                  if( CpldRegCs1 = '1' ) then
                    CpldReg1( 1 downto 0 ) <= DSP_DQ( 1 downto 0 );
                                 CpldReg1(3) <= DSP_DQ(3);
                   end if;
                end if;
        end process;  


  CpldReg1(2)            <= '0';
  CpldReg1(5 downto 4 )  <= DC_STAT( 1 downto 0 );
  CpldReg1(6)            <= '0';
  CpldReg1(7)            <= not DC_DETn;

  DC_CNTL( 1 downto 0 )  <= CpldReg1( 1 downto 0 );

  DC_RESETn              <= '0' when    CpldReg1(3)  = '1'
                                        or DC_POR = '0' else '1';




       
                 
  -- ========================================================================
        -- REG 4: Version Register
        -- Bit 2-0   PWB Revision 2-0
        -- Bit 3     NU read 0
        -- Bit 7-4   CPLD version

        CpldReg4(7 downto 0 ) <= CPLD_VERSION(3 downto 0 ) & PWB_REV(3 downto 0 );  

       
               
        -- ========================================================================
        -- REG 6: Misc. Register
        -- Bit 0     McBSP0 aic23 enable
        -- Bit 1     MCBsp2 expansion
        -- Bit 2     RESERVED
        -- Bit 3     RESERVED
        -- Bit 4     RESERVED
        -- Bit 5     RESERVED
        -- Bit 6     RESERVED
        -- Bit 7     mcbsp0 select
        process( SystemResetn, DSP_WEn, CpldRegCs6, DSP_DQ )
  begin
                if SystemResetn = '0' then     
                    CpldReg6 <= "00000000";
                elsif DSP_WEn'event and DSP_WEn = '1' then   
                  if( CpldRegCs6 = '1' ) then
                    CpldReg6 <= DSP_DQ;
                  end if;
                end if;
        end process;

       

        MCBSP_ONBD_SEL0 <=  NOT CpldReg6(0);
          
  MCBSP_ONBD_SEL2 <=  CpldReg6(1);

  MCBSP_EXP_SEL2  <= NOT CpldReg6(1);

        DSP_TINOUT_0 <=  X_TIN0 when CpldReg6(2) = '1'
                                    else 'Z';

        X_TOUT0 <= DSP_TINOUT_0 when CpldReg6(2) = '1'
                                    else 'Z';               


  CORE_VCNTL0 <=  CpldReg6(6) when CpldReg6(4) = '1'
                                    else DSP_GP5;       

  CORE_VCNTL1 <= CpldReg6(7) when CpldReg6(4) = '1'
                             else DSP_GP6;       

        DIGIO1  <= CpldReg6(7) when CpldReg6(4) = '1'
                             else DSP_GP6;          

        DIGIO0 <=  CpldReg6(6) when CpldReg6(4) = '0'
                                    else DSP_GP5;               


        -- ========================================================================
        -- REG 7: Interrupt Register
        -- Bit 0     RESERVED
        -- Bit 1     RESERVED
        -- Bit 2     RESERVED
        -- Bit 3     RESERVED
        -- Bit 4     RESERVED
        -- Bit 5     RESERVED
        -- Bit 6     RESERVED
        -- Bit 7     RESERVED
        process( SystemResetn, DSP_WEn, CpldRegCs7, DSP_DQ )
  begin
                if SystemResetn = '0' then     
                    CpldReg7 <= "00000000";
                elsif DSP_WEn'event and DSP_WEn = '1' then   
                  if( CpldRegCs7 = '1' ) then
                    CpldReg7 <= DSP_DQ;
                  end if;
                end if;
        end process;

        ---

  POWER_UP  <=  PON_CORE;

  DSP_INT0 <= '0' when ((CpldReg7(0) = '1' and  WAKE_UP_SW = '1') OR
                        (CpldReg7(4) = '1' and  POWER_UP  = '1' ) OR
                                                                                                (DC_INT0n   = '0'))
                               else '1';       

  DSP_INT1 <= '0' when ((CpldReg7(1) = '1' and  WAKE_UP_SW = '1') OR
                        (CpldReg7(5) = '1' and  POWER_UP   = '1') OR
                                                                                          (DC_INT1n   = '0'))
                               else '1';       

  DSP_INT3 <= '0' when ((CpldReg7(3) = '1' and  WAKE_UP_SW = '1') OR
                        (CpldReg7(7) = '1' and  POWER_UP   = '1') OR
                                                                                          (DC_INT3n   = '0'))
                               else '1';       



-- #################################################################
        -- LCD
        --
       
        -- Create a divide by 4 clock with a LcdClkEn.  
        -- DivClk    LcdClkEn
        --   00        0
        --   01        0
        --   10        1
        --   11        0
        -- All states operate on Mclk when LcdClkEn = '1'.
        -- A 1-100
        -- A 1-101
        --
  process( SystemResetn, CLKIN )
        begin
          if SystemResetn = '0' then
                  MclkDiv  <= (others => '0' );
                        LcdClkEn <= '0';
                elsif CLKIN'event and CLKIN = '1' then

                  MclkDiv <= MclkDiv + 1;
                       
                        if( MclkDiv = "10" ) then
                          LcdClkEn <= '1';
                        else
                          LcdClkEn <= '0';
                  end if;
                end if;
        end process;

        -- Latch the data and address on the rising edge of DSP_WEnn
        process( DSP_WEn, SystemResetn,  CpldRegCs8,CpldRegCs9,DSP_DQ  )
        begin
          if SystemResetn = '0' then
                    LcdD <= ( others => '0' );
                                LcdA0 <= '0';
                elsif DSP_WEn'event and DSP_WEn = '1' then
                  if (     CpldRegCs8 = '1'
                             or  CpldRegCs9 = '1' ) then
                                         LcdD <= DSP_DQ;
                                         LcdA0 <=  DSP_ADDR(1);
                        end if;
                end if;
        end process;

        -- Generate a LCD Start edge.  We clear the edge once we have
        -- detected it with LcdStart.
        process( DSP_WEn, SystemResetn, CpldRegCs8, CpldRegCs9, LcdStart )
        begin
          if SystemResetn = '0' or LcdStart = '1' then
        LcdRequest <= '0';
                elsif DSP_WEn'event and DSP_WEn = '1' then
                  if (     CpldRegCs8 = '1'
                             or  CpldRegCs9 = '1' ) then
                                         LcdRequest <= '1';
                        end if;
                end if;
        end process;

        -- Generate the LCD start request.  
        -- If we have a spare flip-flop we should sync before
        -- using it.
        --
  process( SystemResetn, CLKIN, LcdRequest, LcdClkEn )
        begin
          if SystemResetn = '0' then
        LcdStart <= '0';
                elsif CLKIN'event and CLKIN = '1' then
        if( LcdClkEn = '1' ) then
                                    LcdStart <= LcdRequest;
                                end if;
                end if;
        end process;

        -- Load the shift count with 0 on start and count up to 7
        -- The LcdSckOn signal is ON for Load/Count and OFF otherwise.
        --
  process( SystemResetn, CLKIN, LcdStart, LcdClkEn )
        begin
          if SystemResetn = '0' then
        LcdShiftCnt <= (others => '1');
                                LcdSckOn    <= '0';
                elsif CLKIN'event and CLKIN = '1' then
        if( LcdClkEn = '1' ) then
                                    LcdSckOn <= '0';   -- Default
            if LcdStart = '1' then
                                             LcdShiftCnt <= "000";
                                                         LcdSckOn    <= '1';
                                                else
                                                  if LcdShiftCnt /= "111" then
                                                           LcdShiftCnt <= LcdShiftCnt + "001";
                                                                 LcdSckOn  <= '1';
                                                        end if;
                                          end if;
                                end if;
                end if;
        end process;

        -- Mux out the data
        process( LcdShiftCnt, LcdD )
        begin
           case LcdShiftCnt( 2 downto 0 ) is
                    when "111"   => LcdMuxD <= LcdD(0);
                    when "110"   => LcdMuxD <= LcdD(1);
                    when "101"   => LcdMuxD <= LcdD(2);
                    when "100"   => LcdMuxD <= LcdD(3);
                    when "011"   => LcdMuxD <= LcdD(4);
                    when "010"   => LcdMuxD <= LcdD(5);
                    when "001"   => LcdMuxD <= LcdD(6);
                    when others  => LcdMuxD <= LcdD(7);
    end case;
        end process;

        oLCD_SI   <= LcdMuxD;
        oLCD_SCK  <= MclkDiv(1) when LcdSckOn = '1' else '1';
        oLCD_A0   <= LcdA0;
        LCD_BUSY <= '0' when (    LcdRequest  = '1'
                               or LcdStart    = '1'
                                                                                                 or LcdSckOn    = '1' ) else '1';



        -- ========================================================================
        -- REG 10: xxxx. Register
        -- Bit 0   RESERVED
        -- Bit 1   RESERVED
        -- Bit 2   RESERVED
        -- Bit 3   RESERVED  
        -- Bit 4   RESERVED  
        -- Bit 5   RESERVED  
        -- Bit 6   KEYBOARD_RESET
        -- Bit 7   REad LCD_BUSY
        process( SystemResetn, DSP_WEn, CpldRegCs10, DSP_DQ )
  begin
                if SystemResetn = '0' then     
                    CpldReg10 <= "00000000";
                elsif DSP_WEn'event and DSP_WEn = '1' then   
                  if( CpldRegCs10 = '1' ) then
                    CpldReg10 <= DSP_DQ;
                  end if;
                end if;
        end process;

        -- Controls CORE Voltage
       
       
        oLCD_RESET <=  '0' when SystemResetn = '0' or CpldReg10(6)='1' else '1';







        -- =======================================================================
        -- Mux the read data from all the registers and output for reads
        --
  process( DSP_ADDR,LCD_BUSY,CpldReg0,CpldReg1,CpldReg4,CpldReg6,CpldReg7,CpldReg10 )
        begin
                case DSP_ADDR( 4 downto 1) is
            when "0000"  => MuxD  <= CpldReg0;
      when "0001"  => MuxD  <= CpldReg1;
      when "0100"  => MuxD  <= CpldReg4;  
                 
      when "0110"  => MuxD  <= CpldReg6;
                        when "0111"  => MuxD  <= CpldReg7;
                        when "1010"  => MuxD  <= LCD_BUSY & CpldReg10(6 downto 0 );  
                  when others => MuxD  <= "00000000";
    end case;
        end process;            
          
        DSP_DQ <= MuxD  when    DSP_CS1n   = '0'
                           and  DSP_REn   = '0'
                           and  DSP_OEn   = '0'
                                                                           and  DSP_ADDR17 = '1'
                                                                           and  DSP_ADDR18 = '1'
                                                                                 and  DSP_ADDR19 = '1'      -- for UART or CPLD Select
                                                                                 and  DSP_ADDR20 = '1'
                           else "ZZZZZZZZ";

-- ONBD_BUF_DIR <=  NOT DSP_REn;  
---
---        ONBD_BUF_OEn <= '0' when (( DSP_CS3n = '0' and CpldReg10(3)='1') or DSP_CS2n = '0'or DSP_CS1n = '0')
---                                                                                                  else '1';

                         

        -- #########################################################################
  -- Generate the Daughter card buffer control signals
        --     
        -- Point the data buffer direction to the DC if not reading.
        -- Only enable the DC buffer if reading and daughter card is installed
        -- Only enable control ouput signals if daughter card is installed
        --

  DC_DBUF_OEn <= '0' when    ( DC_DETn    = '0' and DSP_CS2n = '0')
                                or ( DC_DETn    = '0' and DSP_CS3n = '0')
                                                                                                  else '1';

  DC_CNTL_OEn <= '0' when DC_DETn = '0' else '1';

  DC_DBUF_DIR <= DSP_REn;  



end behavior_c5509aevm;


zhangmangui
2楼-- · 2019-07-23 17:49
 精彩回答 2  元偷偷看……
zhangmangui
3楼-- · 2019-07-23 23:10
robter
4楼-- · 2019-07-24 01:48
很好很好,感谢感谢
Sode
5楼-- · 2019-07-24 03:42
不错,之前遇到的问题终于解决了,感谢楼主
zhangmangui
6楼-- · 2019-07-24 07:45
robter 发表于 2016-4-5 11:07
很好很好,感谢感谢

这个我也觉得非常好   呵呵

一周热门 更多>