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

📄 rxsync.vhd

📁 HDLC接口的实现
💻 VHD
字号:
--------------------------------------------------------------------------------- Title      : Rx Synchronizer-- Project    : HDLC controller--------------------------------------------------------------------------------- File       : RxSync.vhd-- Author     : Jamil Khatib  <khatib@ieee.org>-- Organization: OpenCores Project-- Created    : 2001/04/04-- Last update: 2001/04/04-- Platform   : -- Simulators  : Modelsim/Win98 , NC-sim/Linux-- Synthesizers: -- Target      : -- Dependency  : ieee.std_logic--------------------------------------------------------------------------------- Description: Rx Synchronizer--------------------------------------------------------------------------------- Copyright (c) 2001  Jamil Khatib-- -- This VHDL design file is an open design; you can redistribute it and/or-- modify it and/or implement it after contacting the author-- You can check the draft license at-- http://www.opencores.org/OIPC/license.shtml--------------------------------------------------------------------------------- Revisions  :-- Revision Number :   1-- Version         :   0.1-- Date            :  2001/04/04-- Modifier        :  Jamil Khatib  <khatib@ieee.org>-- Desccription    :  Created-- ToOptimize      :-- Known Bugs      :--------------------------------------------------------------------------------- $Log: RxSync.vhd,v $-- Revision 1.1  2001/04/30 19:37:17  khatib-- First stable release---- Revision 1.1  2001/04/14 15:02:25  jamil-- Initial Release---------------------------------------------------------------------------------LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY RxSynch_ent IS  -- D1 Domain 1 = Serial line  -- D2 Domain 2 = System interface  PORT (    rst_n          : IN  STD_LOGIC;     -- System reset    clk_D1         : IN  STD_LOGIC;     -- Domain 1 clock    clk_D2         : IN  STD_LOGIC;     -- Domain 2 clock    rdy_D1         : IN  STD_LOGIC;     -- Domain 1 ready    rdy_D2         : OUT STD_LOGIC;     -- Domain 2 ready    RXD_D1         : IN  STD_LOGIC_VECTOR(7 DOWNTO 0);  -- Domain 1 Rx Data bus    RXD_D2         : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);  -- Domain 2 Rx Data Bus    ValidFrame_D1  : IN  STD_LOGIC;     -- Domain 1 Valid Frame    ValidFrame_D2  : OUT STD_LOGIC;     -- Domain 2 Valid Frame    AbortSignal_D1 : IN  STD_LOGIC;     -- Domain 1 Abort signal    AbortSignal_D2 : OUT STD_LOGIC;     -- Domain 2 Abort signal    FrameError_D1  : IN  STD_LOGIC;     -- Domain 1 Frame Error    FrameError_D2  : OUT STD_LOGIC;     -- Domain 2 Frame Error    ReadByte_D1    : OUT STD_LOGIC;     -- Domain 1 Read Byte    ReadByte_D2    : IN  STD_LOGIC      -- Domain 2 Read Byte    );END RxSynch_ent;-------------------------------------------------------------------------------ARCHITECTURE RxSynch_rtl OF RxSynch_ent ISBEGIN  -- ARCHITECTURE RxSynch_rtl-- Data bus does not need synchronization    RXD_D2 <= RXD_D1;  -- purpose: rdy signal  -- type   : sequential  -- inputs : clk_D2, rst_n  -- outputs:   Rdy_signal     : PROCESS (clk_D2, rst_n)    VARIABLE FF1 : STD_LOGIC;  BEGIN  -- PROCESS Rdy_signal    IF rst_n = '0' THEN                 -- asynchronous reset (active low)      FF1    := '0';      rdy_D2 <= '0';    ELSIF clk_D2'event AND clk_D2 = '1' THEN  -- rising clock edge      rdy_D2 <= FF1;      FF1    := rdy_D1;    END IF;  END PROCESS Rdy_signal;  -- purpose: Read bytes signal  -- type   : sequential  -- inputs : clk_D1, rst_n  -- outputs:   Read_signal    : PROCESS (clk_D1, rst_n)    VARIABLE FF1 : STD_LOGIC;  BEGIN  -- PROCESS Read_signal    IF rst_n = '0' THEN                 -- asynchronous reset (active low)      FF1         := '0';      ReadByte_D1 <= '0';    ELSIF clk_D1'event AND clk_D1 = '1' THEN  -- rising clock edge      ReadByte_D1 <= FF1;      FF1         := ReadByte_D2;    END IF;  END PROCESS Read_signal;  -- purpose: Valid Frame signal  -- type   : sequential  -- inputs : clk_D2, rst_n  -- outputs:   ValidFrame_signal : PROCESS (clk_D2, rst_n)    VARIABLE FF1    : STD_LOGIC;  BEGIN  -- PROCESS ValidFrame_signal    IF rst_n = '0' THEN                 -- asynchronous reset (active low)      FF1           := '0';      ValidFrame_D2 <= '0';    ELSIF clk_D2'event AND clk_D2 = '1' THEN  -- rising clock edge      ValidFrame_D2 <= FF1;      FF1           := ValidFrame_D1;    END IF;  END PROCESS ValidFrame_signal;  -- purpose: Abort  signal  -- type   : sequential  -- inputs : clk_D2, rst_n  -- outputs:   Abort_signal   : PROCESS (clk_D2, rst_n)    VARIABLE FF1 : STD_LOGIC;  BEGIN  -- PROCESS AbortedTrans_signal    IF rst_n = '0' THEN                 -- asynchronous reset (active low)      FF1            := '0';      AbortSignal_D2 <= '0';    ELSIF clk_D2'event AND clk_D2 = '1' THEN  -- rising clock edge      AbortSignal_D2 <= FF1;      FF1            := AbortSignal_D1;    END IF;  END PROCESS Abort_signal;  -- purpose: Error signal  -- type   : sequential  -- inputs : clk_D2, rst_n  -- outputs:   Error_signal   : PROCESS (clk_D2, rst_n)    VARIABLE FF1 : STD_LOGIC;  BEGIN  -- PROCESS FrameError_signal    IF rst_n = '0' THEN                 -- asynchronous reset (active low)      FF1           := '0';      FrameError_D2 <= '0';    ELSIF clk_D2'event AND clk_D2 = '1' THEN  -- rising clock edge      FrameError_D2 <= FF1;      FF1           := FrameError_D1;    END IF;  END PROCESS Error_signal;END RxSynch_rtl;

⌨️ 快捷键说明

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