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

📄 can_top.vhd

📁 free hardware ip core about sparcv8,a soc cpu in vhdl
💻 VHD
📖 第 1 页 / 共 5 页
字号:
      IF (rst = '1') THEN         resync_latched <= '0';          ELSIF (clk'EVENT AND clk = '1') THEN         IF (((resync AND seg2) AND (NOT sync_window)) = '1') THEN            resync_latched <= '1' ;             ELSE            IF (go_seg1 = '1') THEN               resync_latched <= '0';                END IF;         END IF;      END IF;   END PROCESS;   -- Synchronization stage/segment    PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         sync <= '0';          ELSIF (clk'EVENT AND clk = '1') THEN         IF (clk_en_q = '1') THEN            sync <= go_sync ;             END IF;      END IF;   END PROCESS;   -- Seg1 stage/segment (together with propagation segment which is 1 quant long)    PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         seg1 <= '1';          ELSIF (clk'EVENT AND clk = '1') THEN         IF (go_seg1 = '1') THEN            seg1 <= '1' ;             ELSE            IF (go_seg2 = '1') THEN               seg1 <= '0' ;                END IF;         END IF;      END IF;   END PROCESS;   -- Seg2 stage/segment    PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         seg2 <= '0';          ELSIF (clk'EVENT AND clk = '1') THEN         IF (go_seg2 = '1') THEN            seg2 <= '1' ;             ELSE            IF ((go_sync OR go_seg1) = '1') THEN               seg2 <= '0' ;                END IF;         END IF;      END IF;   END PROCESS;   -- Quant counter    PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         quant_cnt <= "00000";          ELSIF (clk'EVENT AND clk = '1') THEN         IF ((go_sync OR go_seg1 OR go_seg2) = '1') THEN            quant_cnt <= "00000" ;             ELSE            IF (clk_en_q = '1') THEN               quant_cnt <= quant_cnt + "00001" ;                END IF;         END IF;      END IF;   END PROCESS;   temp_xhdl6 <= ("0" & ("00" & sync_jump_width + "0001")) WHEN (quant_cnt > "000" & sync_jump_width) ELSE (quant_cnt + "00001");   -- When late edge is detected (in seg1 stage), stage seg1 is prolonged.    PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         delay <= "0000";          ELSIF (clk'EVENT AND clk = '1') THEN         IF (((resync AND seg1) AND (NOT transmitting OR (transmitting AND (tx_next_sp OR (tx AND (NOT rx)))))) = '1') THEN            delay <= temp_xhdl6(3 DOWNTO 0) ;             ELSE            IF ((go_sync OR go_seg1) = '1') THEN               delay <= "0000" ;                END IF;         END IF;      END IF;   END PROCESS;   -- If early edge appears within this window (in seg2 stage), phase error is fully compensated   sync_window <= CONV_STD_LOGIC((time_segment2 - quant_cnt(2 DOWNTO 0)) < ('0' & (sync_jump_width + "01"))) ;   -- Sampling data (memorizing two samples all the time).      PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         sample <= "11";          ELSIF (clk'EVENT AND clk = '1') THEN         IF (clk_en_q = '1') THEN            sample <= sample(0) & rx;             END IF;      END IF;   END PROCESS;   -- When enabled, tripple sampling is done here.      PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         sampled_bit_xhdl2 <= '1';             sampled_bit_q_xhdl3 <= '1';             sample_point_xhdl1 <= '0';          ELSIF (clk'EVENT AND clk = '1') THEN         IF (go_error_frame = '1') THEN            sampled_bit_q_xhdl3 <= sampled_bit_xhdl2 ;                sample_point_xhdl1 <= '0' ;             ELSE            IF ((clk_en_q AND (NOT hard_sync_xhdl5)) = '1') THEN               IF ((seg1 AND CONV_STD_LOGIC(quant_cnt = ('0' & (time_segment1 + delay)))) = '1') THEN                  sample_point_xhdl1 <= '1' ;                      sampled_bit_q_xhdl3 <= sampled_bit_xhdl2 ;                      IF (triple_sampling = '1') THEN                     sampled_bit_xhdl2 <= (sample(0) AND sample(1)) OR (sample(0) AND rx) OR (sample(1) AND rx) ;                      ELSE                     sampled_bit_xhdl2 <= rx ;                      END IF;               END IF;            ELSE               sample_point_xhdl1 <= '0' ;                END IF;         END IF;      END IF;   END PROCESS;   -- tx_next_sp shows next value that will be driven on the TX. When driving 1 and receiving 0 we   -- need to synchronize (even when we are a transmitter)      PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         tx_next_sp <= '0';          ELSIF (clk'EVENT AND clk = '1') THEN         IF ((go_overload_frame OR (go_error_frame AND (NOT node_error_passive)) OR go_tx OR send_ack) = '1') THEN            tx_next_sp <= '0' ;             ELSE            IF ((go_error_frame AND node_error_passive) = '1') THEN               tx_next_sp <= '1' ;                ELSE               IF (sample_point_xhdl1 = '1') THEN                  tx_next_sp <= tx_next ;                   END IF;            END IF;         END IF;      END IF;   END PROCESS;   -- Blocking synchronization (can occur only once in a bit time)    PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         sync_blocked <= '1' ;          ELSIF (clk'EVENT AND clk = '1') THEN         IF (clk_en_q = '1') THEN            IF (resync = '1') THEN               sync_blocked <= '1' ;                ELSE               IF (go_seg2 = '1') THEN                  sync_blocked <= '0' ;                   END IF;            END IF;         END IF;      END IF;   END PROCESS;   -- Blocking hard synchronization when occurs once or when we are transmitting a msg    PROCESS (clk, rst)   BEGIN      IF (rst = '1') THEN         hard_sync_blocked <= '0' ;          ELSIF (clk'EVENT AND clk = '1') THEN         IF (((hard_sync_xhdl5 AND clk_en_q) OR ((((transmitting AND transmitter) OR go_tx) AND tx_point_xhdl4) AND (NOT tx_next))) = '1') THEN            hard_sync_blocked <= '1' ;             ELSE            IF ((go_rx_inter OR (((rx_idle OR rx_inter) AND sample_point_xhdl1) AND sampled_bit_xhdl2)) = '1') THEN               -- When a glitch performed synchronization                              hard_sync_blocked <= '0' ;                END IF;         END IF;      END IF;   END PROCESS;END ARCHITECTURE RTL;-------------------------------------------------------------------------------------------------- VHDL file generated by X-HDL - Revision 3.2.53  Aug. 1, 2005 -- Tue Aug  9 07:33:51 2005----      Input file         : C:/Documents and Settings/BryantI/My Documents/tmp/can_top.v--      Design name        : can_fifo--      Author             : --      Company            : Actel----      Description        : ------------------------------------------------------------------------------------------------------////////////////////////////////////////////////////////////////////--//                                                              ////--//  can_fifo.v                                                  ////--//                                                              ////--//                                                              ////--//  This file is part of the CAN Protocol Controller            ////--//  http://www.opencores.org/projects/can/                      ////--//                                                              ////--//                                                              ////--//  Author(s):                                                  ////--//       Igor Mohor                                             ////--//       igorm@opencores.org                                    ////--//                                                              ////--//                                                              ////--//  All additional information is available in the README.txt   ////--//  file.                                                       ////--//                                                              ////--////////////////////////////////////////////////////////////////////--//                                                              ////--// Copyright (C) 2002, 2003, 2004 Authors                       ////--//                                                              ////--// 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  ////--// the original copyright notice and the associated disclaimer. ////--//                                                              ////--// This source file is free software; you can redistribute it   ////--// and/or modify it under the terms of the GNU Lesser General   ////--// Public License as published by the Free Software Foundation; ////--// either version 2.1 of the License, or (at your option) any   ////--// later version.                                               ////--//                                                              ////--// This source is distributed in the hope that it will be       ////--// useful, but WITHOUT ANY WARRANTY; without even the implied   ////--// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////--// PURPOSE.  See the GNU Lesser General Public License for more ////--// details.                                                     ////--//                                                              ////--// You should have received a copy of the GNU Lesser General    ////--// Public License along with this source; if not, download it   ////--// from http://www.opencores.org/lgpl.shtml                     ////--//                                                              ////--// The CAN protocol is developed by Robert Bosch GmbH and       ////--// protected by patents. Anybody who wants to implement this    ////--// CAN IP core on silicon has to obtain a CAN protocol license  ////--// from Bosch.                                                  ////--//                                                              ////--////////////////////////////////////////////////////////////////////---- CVS Revision History---- Rev 1.28 rd_info_pointer fix from opencores merged. /Kristoffer---- $Log: can_fifo.v,v $-- Revision 1.27  2004/11/18 12:39:34  igorm-- Fixes for compatibility after the SW reset.---- Revision 1.26  2004/02/08 14:30:57  mohor-- Header changed.---- Revision 1.25  2003/10/23 16:52:17  mohor-- Active high/low problem when Altera devices are used. Bug fixed by-- Rojhalat Ibrahim.---- Revision 1.24  2003/10/17 05:55:20  markom-- mbist signals updated according to newest convention---- Revision 1.23  2003/09/05 12:46:41  mohor-- ALTERA_RAM supported.---- Revision 1.22  2003/08/20 09:59:16  mohor-- Artisan RAM fixed (when not using BIST).---- Revision 1.21  2003/08/14 16:04:52  simons-- Artisan ram instances added.---- Revision 1.20  2003/07/16 14:00:45  mohor-- Fixed according to the linter.---- Revision 1.19  2003/07/03 09:30:44  mohor-- PCI_BIST replaced with CAN_BIST.---- Revision 1.18  2003/06/27 22:14:23  simons-- Overrun fifo implemented with FFs, because it is not possible to create such a memory.

⌨️ 快捷键说明

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