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

📄 acs_unit.vhd

📁 这是一个计算维特比译码的程序
💻 VHD
字号:
-- ----------------------------------------------------------------- Module: ACS_Unit-- Simulink Path: hdlcoderviterbi/viterbi_block/ACS Unit-- Created: 2009-03-24 16:23:50-- Hierarchy Level: 1------ -------------------------------------------------------------LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.numeric_std.ALL;USE work.viterbi_block_pkg.ALL;ENTITY ACS_Unit IS  PORT( clk                               :   IN    std_logic;        reset                             :   IN    std_logic;        enb                               :   IN    std_logic;        In1                               :   IN    vector_of_std_logic_vector4(0 TO 3);           Out1                              :   OUT   std_logic_vector(0 TO 63);  -- boolean [64]        Out2                              :   OUT   std_logic_vector(7 DOWNTO 0)           );END ACS_Unit;ARCHITECTURE rtl OF ACS_Unit IS  -- Component Declarations  COMPONENT Reorder    PORT( clk                             :   IN    std_logic;          reset                           :   IN    std_logic;          enb                             :   IN    std_logic;          IN_1                            :   IN    vector_of_std_logic_vector4(0 TO 63);             OUT_1                           :   OUT   vector_of_std_logic_vector4(0 TO 63)              );  END COMPONENT;  COMPONENT Renormalize    PORT( clk                             :   IN    std_logic;          reset                           :   IN    std_logic;          enb                             :   IN    std_logic;          In1                             :   IN    vector_of_std_logic_vector4(0 TO 63);             IDX                             :   OUT   std_logic_vector(7 DOWNTO 0);            SM                              :   OUT   vector_of_std_logic_vector4(0 TO 63)              );  END COMPONENT;  COMPONENT ACS    PORT( clk                             :   IN    std_logic;          reset                           :   IN    std_logic;          enb                             :   IN    std_logic;          BM                              :   IN    vector_of_std_logic_vector4(0 TO 3);              SM                              :   IN    vector_of_std_logic_vector4(0 TO 63);             DEC                             :   OUT   std_logic_vector(0 TO 63);  -- boolean [64]          NSM                             :   OUT   vector_of_std_logic_vector4(0 TO 63)              );  END COMPONENT;  -- Component Configuration Statements  FOR ALL : Reorder    USE ENTITY work.Reorder(rtl);  FOR ALL : Renormalize    USE ENTITY work.Renormalize(rtl);  FOR ALL : ACS    USE ENTITY work.ACS(rtl);  -- Local Type Definitions  TYPE vector_of_unsigned4 IS ARRAY (NATURAL RANGE <>) OF unsigned(3 DOWNTO 0);  -- Signals  SIGNAL ACS_out2                         : vector_of_std_logic_vector4(0 TO 63);      SIGNAL Reorder_out1                     : vector_of_std_logic_vector4(0 TO 63);      SIGNAL Renormalize_out1                 : std_logic_vector(7 DOWNTO 0);    SIGNAL Renormalize_out2                 : vector_of_std_logic_vector4(0 TO 63);      SIGNAL s                                : vector_of_unsigned4(0 TO 63);      SIGNAL Store_State_Metrics_out1         : vector_of_unsigned4(0 TO 63);      SIGNAL s_1                              : vector_of_std_logic_vector4(0 TO 63);      SIGNAL ACS_out1                         : std_logic_vector(0 TO 63);  -- boolean [64]  SIGNAL Selector_out1                    : std_logic_vector(0 TO 63);  -- boolean [64]  SIGNAL s_2                              : unsigned(7 DOWNTO 0);  -- uint32  SIGNAL Data_Type_Conversion_out1        : unsigned(7 DOWNTO 0);  -- uint8BEGIN  u_Reorder : Reorder    PORT MAP      (clk => clk,       reset => reset,       enb => enb,       IN_1 => ACS_out2,           OUT_1 => Reorder_out1           );  u_Renormalize : Renormalize    PORT MAP      (clk => clk,       reset => reset,       enb => enb,       In1 => Reorder_out1,           IDX => Renormalize_out1,         SM => Renormalize_out2           );  u_ACS : ACS    PORT MAP      (clk => clk,       reset => reset,       enb => enb,       BM => In1,           SM => s_1,           DEC => ACS_out1,  -- boolean        NSM => ACS_out2           );  outputgen1: FOR k IN 0 TO 63 GENERATE    s(k) <= unsigned(Renormalize_out2(k));  END GENERATE;  Store_State_Metrics_process : PROCESS (clk, reset)  BEGIN    IF reset = '1' THEN      Store_State_Metrics_out1 <= (OTHERS => (OTHERS => '0'));    ELSIF clk'event AND clk = '1' THEN      IF enb = '1' THEN        Store_State_Metrics_out1(0 TO 63) <= s(0 TO 63);      END IF;    END IF;   END PROCESS Store_State_Metrics_process;  outputgen: FOR k IN 0 TO 63 GENERATE    s_1(k) <= std_logic_vector(Store_State_Metrics_out1(k));  END GENERATE;  Selector_out1(0) <= ACS_out1(0);  Selector_out1(1) <= ACS_out1(2);  Selector_out1(2) <= ACS_out1(4);  Selector_out1(3) <= ACS_out1(6);  Selector_out1(4) <= ACS_out1(8);  Selector_out1(5) <= ACS_out1(10);  Selector_out1(6) <= ACS_out1(12);  Selector_out1(7) <= ACS_out1(14);  Selector_out1(8) <= ACS_out1(16);  Selector_out1(9) <= ACS_out1(18);  Selector_out1(10) <= ACS_out1(20);  Selector_out1(11) <= ACS_out1(22);  Selector_out1(12) <= ACS_out1(24);  Selector_out1(13) <= ACS_out1(26);  Selector_out1(14) <= ACS_out1(28);  Selector_out1(15) <= ACS_out1(30);  Selector_out1(16) <= ACS_out1(32);  Selector_out1(17) <= ACS_out1(34);  Selector_out1(18) <= ACS_out1(36);  Selector_out1(19) <= ACS_out1(38);  Selector_out1(20) <= ACS_out1(40);  Selector_out1(21) <= ACS_out1(42);  Selector_out1(22) <= ACS_out1(44);  Selector_out1(23) <= ACS_out1(46);  Selector_out1(24) <= ACS_out1(48);  Selector_out1(25) <= ACS_out1(50);  Selector_out1(26) <= ACS_out1(52);  Selector_out1(27) <= ACS_out1(54);  Selector_out1(28) <= ACS_out1(56);  Selector_out1(29) <= ACS_out1(58);  Selector_out1(30) <= ACS_out1(60);  Selector_out1(31) <= ACS_out1(62);  Selector_out1(32) <= ACS_out1(1);  Selector_out1(33) <= ACS_out1(3);  Selector_out1(34) <= ACS_out1(5);  Selector_out1(35) <= ACS_out1(7);  Selector_out1(36) <= ACS_out1(9);  Selector_out1(37) <= ACS_out1(11);  Selector_out1(38) <= ACS_out1(13);  Selector_out1(39) <= ACS_out1(15);  Selector_out1(40) <= ACS_out1(17);  Selector_out1(41) <= ACS_out1(19);  Selector_out1(42) <= ACS_out1(21);  Selector_out1(43) <= ACS_out1(23);  Selector_out1(44) <= ACS_out1(25);  Selector_out1(45) <= ACS_out1(27);  Selector_out1(46) <= ACS_out1(29);  Selector_out1(47) <= ACS_out1(31);  Selector_out1(48) <= ACS_out1(33);  Selector_out1(49) <= ACS_out1(35);  Selector_out1(50) <= ACS_out1(37);  Selector_out1(51) <= ACS_out1(39);  Selector_out1(52) <= ACS_out1(41);  Selector_out1(53) <= ACS_out1(43);  Selector_out1(54) <= ACS_out1(45);  Selector_out1(55) <= ACS_out1(47);  Selector_out1(56) <= ACS_out1(49);  Selector_out1(57) <= ACS_out1(51);  Selector_out1(58) <= ACS_out1(53);  Selector_out1(59) <= ACS_out1(55);  Selector_out1(60) <= ACS_out1(57);  Selector_out1(61) <= ACS_out1(59);  Selector_out1(62) <= ACS_out1(61);  Selector_out1(63) <= ACS_out1(63);  Out1 <= Selector_out1;  s_2 <= unsigned(Renormalize_out1);  Data_Type_Conversion_out1 <= s_2(7 DOWNTO 0);  Out2 <= std_logic_vector(Data_Type_Conversion_out1);END rtl;

⌨️ 快捷键说明

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