亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? altera_mf.vhd

?? 一本老師推薦的經典的VHDL覆蓋基礎的入門書籍
?? VHD
?? 第 1 頁 / 共 5 頁
字號:

                if (fb_int >= result_full) then
                    cout_temp :='1';
                else
                    cout_temp :='0';
                end if;
            end if;
        end if;

        if (sload = '0') then
            if ((LPM_REPRESENTATION = "SIGNED") or (sign_data = '1')) then
                overflow_int <= ((not (data (width_in-1) xor result_int (width_out -1))) xor (not (add_sub))) and
                                (result_int (width_out -1) xor temp_sum_int (width_out -1));
            else
                overflow_int <= not (add_sub xor cout_temp);
            end if;
        else
            overflow_int <= '0';
            cout_temp := not add_sub;
        end if;

        cout_int <= cout_temp;
        temp_sum <= temp_sum_int;

    end process ADDSUB;

    ACC: process (clock, aclr, cout_int)

    -- VARIABLE DECLARATIOM
    variable head_pipe : integer;
    variable full_res: std_logic_vector (width_out+1 downto 0);
    begin
        head_pipe := head;

        if (aclr = '1') then
            result <= (others => '0');
            result_int <= (others => '0');
            cout <= '0';
            overflow <= '0';
            result_pipe <= (others => (others => '0'));
        else
            if (extra_latency = 0) then
                cout <= cout_int;
            end if;

            if (clock'event and (clock = '1' and clken = '1')) then
                if (extra_latency > 0) then
                    result_pipe (head_pipe) <= (result_int (width_out+1) &
                                                cout_int &
                                                result_int (width_out-1 downto 0));

                    head_pipe := (head_pipe + 1) mod (extra_latency);
                    if (head_pipe = head) then
                        full_res := (result_int (width_out+1) &
                                     cout_int &
                                     result_int (width_out-1 downto 0));
                    else
                        full_res := result_pipe (head_pipe);
                    end if;
                    cout <= full_res (width_out);
                    result <= full_res (width_out-1 downto 0);
                    overflow <= full_res (width_out+1);
                else
                    overflow <= overflow_int;
                    result <= temp_sum (width_out-1 downto 0);
                end if;
                result_int <= (overflow_int & cout_int &
                               temp_sum (width_out-1 downto 0));
            end if;
        end if;

        head <= head_pipe;
    end process ACC;

end behaviour; -- End behaviour of altaccumulate
-- END OF ARCHITECTURE

-- --------------------------------------------------------------------------
-- Module Name      : altmult_accum
--
-- Description      : a*b + x (MAC)
--
-- Limitation       : Stratix DSP block
--
-- Results expected : signed & unsigned, maximum of 3 pipelines(latency) each.
--
-- --------------------------------------------------------------------------

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use work.ALTERA_DEVICE_FAMILIES.all;

entity altmult_accum is
    generic (

        -- ---------------------
        -- PARAMETER DECLARATION
        -- ---------------------
        width_a                        : integer := 1;
        width_b                        : integer := 1;
        width_result                   : integer := 2;
        width_upper_data               : integer := 1;
        input_source_a                 : string  := "DATAA";
        input_source_b                 : string  := "DATAB";
        input_reg_a                    : string  := "CLOCK0";
        input_aclr_a                   : string  := "ACLR3";
        input_reg_b                    : string  := "CLOCK0";
        input_aclr_b                   : string  := "ACLR3";
        addnsub_reg                    : string  := "CLOCK0";
        addnsub_aclr                   : string  := "ACLR3";
        addnsub_pipeline_reg           : string  := "CLOCK0";
        addnsub_pipeline_aclr          : string  := "ACLR3";
        accum_direction                : string  := "ADD";
        accum_sload_reg                : string  := "CLOCK0";
        accum_sload_aclr               : string  := "ACLR3";
        accum_sload_pipeline_reg       : string  := "CLOCK0";
        accum_sload_pipeline_aclr      : string  := "ACLR3";
        representation_a               : string  := "UNSIGNED";
        sign_reg_a                     : string  := "CLOCK0";
        sign_aclr_a                    : string  := "ACLR3";
        sign_pipeline_reg_a            : string  := "CLOCK0";
        sign_pipeline_aclr_a           : string  := "ACLR3";
        representation_b               : string  := "UNSIGNED";
        sign_reg_b                     : string  := "CLOCK0";
        sign_aclr_b                    : string  := "ACLR3";
        sign_pipeline_reg_b            : string  := "CLOCK0";
        sign_pipeline_aclr_b           : string  := "ACLR3";
        multiplier_reg                 : string  := "CLOCK0";
        multiplier_aclr                : string  := "ACLR3";
        output_reg                     : string  := "CLOCK0";
        output_aclr                    : string  := "ACLR3";
        extra_multiplier_latency       : integer := 0;
        extra_accumulator_latency      : integer := 0;
        dedicated_multiplier_circuitry : string  := "AUTO";
        dsp_block_balancing            : string  := "AUTO";
        lpm_hint                       : string  := "UNUSED";
        lpm_type                       : string  := "altmult_accum";
        intended_device_family         : string  := "Stratix";
        multiplier_rounding            : string  := "NO";
        mult_round_aclr                : string  := "ACLR3";
        mult_round_reg                 : string  := "CLOCK0";
        multiplier_saturation          : string  := "NO";
        mult_saturation_aclr           : string  := "ACLR3";
        mult_saturation_reg            : string  := "CLOCK0";
        accumulator_rounding           : string  := "NO";
        accum_round_aclr               : string  := "ACLR3";
        accum_round_reg                : string  := "CLOCK0";
        accum_round_pipeline_aclr      : string  := "ACLR3";
        accum_round_pipeline_reg       : string  := "CLOCK0";
        accumulator_saturation         : string  := "NO";
        accum_saturation_aclr          : string  := "ACLR3";
        accum_saturation_reg           : string  := "CLOCK0";
        accum_saturation_pipeline_aclr : string  := "ACLR3";
        accum_saturation_pipeline_reg  : string  := "CLOCK0";
        accum_sload_upper_data_aclr    : string  := "ACLR3";
        accum_sload_upper_data_pipeline_aclr : string  := "ACLR3";
        accum_sload_upper_data_pipeline_reg  : string  := "CLOCK0";
        accum_sload_upper_data_reg     : string  := "CLOCK0";
        port_mult_is_saturated         : string  := "UNUSED";
        port_accum_is_saturated        : string  := "UNUSED"
    );

    port (

        -- ----------------
        -- PORT DECLARATION
        -- ----------------

        -- input data ports
        dataa       : in std_logic_vector(width_a -1 downto 0);
        datab       : in std_logic_vector(width_b -1 downto 0);
        scanina     : in std_logic_vector(width_a -1 downto 0) := (others => 'Z');
        scaninb     : in std_logic_vector(width_b -1 downto 0) := (others => 'Z');
        accum_sload_upper_data : in std_logic_vector(width_upper_data - 1 downto 0) := (others => '0');
        sourcea     : in std_logic := '1';
        sourceb     : in std_logic := '1';
        -- control signals
        addnsub   : in std_logic := 'Z';
        accum_sload : in std_logic := '0';
        signa       : in std_logic := 'Z';
        signb       : in std_logic := 'Z';
        -- clock ports
        clock0      : in std_logic := '1';
        clock1      : in std_logic := '1';
        clock2      : in std_logic := '1';
        clock3      : in std_logic := '1';
        -- clock enable ports
        ena0        : in std_logic := '1';
        ena1        : in std_logic := '1';
        ena2        : in std_logic := '1';
        ena3        : in std_logic := '1';
        -- clear ports
        aclr0       : in std_logic := '0';
        aclr1       : in std_logic := '0';
        aclr2       : in std_logic := '0';
        aclr3       : in std_logic := '0';
        -- round and saturation ports
        mult_round       : in std_logic := '0';
        mult_saturation  : in std_logic := '0';
        accum_round      : in std_logic := '0';
        accum_saturation : in std_logic := '0';
        -- output ports
        result      : out std_logic_vector(width_result -1 downto 0) := (others => '0');
        overflow    : out std_logic :='0';
        scanouta    : out std_logic_vector (width_a -1 downto 0) := (others => '0');
        scanoutb    : out std_logic_vector (width_b -1 downto 0) := (others => '0');
        mult_is_saturated  : out std_logic := '0';
        accum_is_saturated : out std_logic := '0'
    );
end altmult_accum;


architecture behaviour of altmult_accum is

    -- -------------------------------------
    -- INTERNAL TEMPLATE DECLARATION
    -- -------------------------------------
    type pipeline_accum is array (extra_accumulator_latency downto 0) of std_logic_vector (width_result downto 0);
    type pipeline_multi is array (extra_multiplier_latency downto 0) of std_logic_vector (width_a + width_b + 4 + 4 downto 0);
    type pipeline_sload is array (extra_multiplier_latency downto 0) of std_logic_vector (width_result -1 +4 downto 0);

    -- -------------------------------------
    -- INTERNAL SIGNALS AND TYPE DECLARATION
    -- -------------------------------------

    signal mult_a             : std_logic_vector (width_a -1 downto 0):= (others => '0');
    signal mult_b             : std_logic_vector (width_b -1 downto 0):= (others => '0');
    signal mult_res           : std_logic_vector (width_a + width_b -1 + 4 downto 0):= (others => '0');
    signal acc_sload_reg      : std_logic := '0';
    signal accum_sload_pipe   : std_logic := '0';
    signal sign_a_reg         : std_logic := '0';
    signal sign_a_pipe        : std_logic := '0';
    signal sign_a_latent      : std_logic := '0';
    signal sign_b_reg         : std_logic := '0';
    signal sign_b_pipe        : std_logic := '0';
    signal sign_b_latent      : std_logic := '0';
    signal addsub_reg         : std_logic := '0';
    signal addsub_pipe        : std_logic := '0';
    signal addsub_latent      : std_logic := '0';
    signal accum_sload_latent : std_logic := '0';

    signal result_pipe : pipeline_accum := (others => (others => '0'));
    signal mult_pipe   : pipeline_multi := (others => (others => '0'));
    signal sload_upper_data_pipe    : pipeline_sload := (others => (others => '0'));

    signal mult_out_latent : std_logic_vector (width_a + width_b -1 + 4 downto 0):= (others => '0');
    signal result_int      : std_logic_vector (width_result -1 + 4 downto 0):= (others => '0');
    signal temp_mult_zero  : std_logic_vector (width_a + width_b downto 0):= (others => '0');
    signal mult_full       : std_logic_vector (width_a + width_b +4 + 4 downto 0):= (others => '0');

    signal mult_signed      : std_logic := '0';
    signal do_add           : std_logic := '0';
    signal temp_mult_signed : std_logic := '0';
    signal head_result      : integer   := 0;
    signal head_mult        : integer   := 0;

    signal lower_bits              : std_logic_vector (width_result + width_upper_data -1 + 4 downto 0) := (others => '0');
    signal sload_upper_data_reg    : std_logic_vector (width_result -1 +4 downto 0) := (others => '0');
    signal sload_upper_data_latent : std_logic_vector (width_result -1 +4 downto 0) := (others => '0');
    signal sload_upper_data_wire    : std_logic_vector (width_result -1 +4 downto 0) := (others => '0');
    signal sload_upper_data_full    : std_logic_vector (width_result -1 +4 downto 0) := (others => '0');

    signal mult_is_saturated_wire : std_logic := '0';
    signal mult_is_saturated_reg  : std_logic := '0';
    signal mult_is_saturated_out  : std_logic := '0';
    signal accum_is_saturated_out : std_logic := '0';

    signal mult_round_wire : std_logic := '0';
    signal mult_saturate_wire : std_logic := '0';
    signal mult_final_out : std_logic_vector (width_a + width_b - 1 + 4 downto 0) := (others => '0');

    signal accum_round_pipe_wire : std_logic := '0';
    signal accum_round_wire : std_logic := '0';
    signal accum_saturation_pipe_wire : std_logic := '0';
    signal accum_saturate_wire : std_logic := '0';
    
    begin

        scanouta           <= mult_a;
        scanoutb           <= mult_b;
        sign_a_latent      <= mult_full (width_a + width_b + 4 + 4) when extra_multiplier_latency >0 else sign_a_reg;
        sign_b_latent      <= mult_full (width_a + width_b + 3 + 4) when extra_multiplier_latency >0 else sign_b_reg;
        accum_sload_latent <= mult_full (width_a + width_b + 2 + 4) when extra_multiplier_latency >0 else acc_sload_reg;
        addsub_latent      <= mult_full (width_a + width_b + 1 + 4) when extra_multiplier_latency >0 else addsub_reg;
        mult_signed        <= mult_full (width_a + width_b + 4) when extra_multiplier_latency >0 else temp_mult_signed;
        mult_out_latent    <= mult_full (width_a + width_b -1 + 4 downto 0) when extra_multiplier_latency >0 else mult_final_out;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久蜜臀| 欧美日韩综合一区| 97se亚洲国产综合自在线不卡| 99久久99精品久久久久久| 色一情一乱一乱一91av| 制服丝袜中文字幕一区| 国产日韩v精品一区二区| 亚洲精品videosex极品| 九九精品视频在线看| 91污在线观看| 日韩一级在线观看| 国产日韩三级在线| 亚洲一二三四久久| 国内成人精品2018免费看| 99精品欧美一区| 欧美成人在线直播| 亚洲乱码国产乱码精品精的特点| 蜜桃精品视频在线观看| 成人91在线观看| 欧美电影影音先锋| 国产精品成人免费在线| 日韩av一区二区在线影视| 成人午夜电影小说| 日韩一区二区三区电影| 国产精品电影一区二区| 精品影视av免费| 欧美性猛片xxxx免费看久爱| 欧美激情一区二区| 蜜桃在线一区二区三区| 一本大道综合伊人精品热热 | 亚洲综合一区二区三区| 国内久久精品视频| 欧美在线免费观看亚洲| 国产偷国产偷精品高清尤物| 日韩中文字幕1| 色哟哟精品一区| 国产人成一区二区三区影院| 日韩电影一二三区| 在线观看精品一区| 中文幕一区二区三区久久蜜桃| 青青草91视频| 欧美手机在线视频| 亚洲欧美另类小说| 国产乱码精品一区二区三区忘忧草| 在线播放国产精品二区一二区四区 | 中文av一区二区| 久久精品国产久精国产爱| 在线观看视频一区二区| 亚洲婷婷综合久久一本伊一区| 国产精品1区二区.| 久久综合久久鬼色中文字| 日韩不卡一区二区三区| 欧美日韩aaaaa| 亚洲国产精品欧美一二99| 91极品美女在线| 最新成人av在线| 99精品热视频| 国产精品视频九色porn| 国产成人在线网站| 久久久久国产精品麻豆| 久久国产日韩欧美精品| 日韩一级大片在线| 免费一级片91| 日韩区在线观看| 美女国产一区二区| 日韩欧美视频在线| 蜜臀国产一区二区三区在线播放| 欧美精品精品一区| 日韩电影免费在线看| 日韩色视频在线观看| 久久99精品一区二区三区三区| 日韩亚洲欧美在线观看| 免费看日韩a级影片| 日韩视频一区在线观看| 男女男精品网站| 久久亚洲综合色| 国产精品一区二区免费不卡 | jlzzjlzz亚洲女人18| 欧美经典一区二区| 成人福利视频在线看| 亚洲欧美综合色| 日本高清不卡视频| 亚洲高清免费观看| 欧美一区二区日韩一区二区| 蜜桃av一区二区在线观看| 精品国产乱码久久久久久久| 国产精品一区二区久激情瑜伽| 国产亚洲欧美一区在线观看| 国产成人鲁色资源国产91色综| 国产精品青草综合久久久久99| 91网址在线看| 亚洲成人免费av| 精品精品欲导航| 成人美女视频在线看| 亚洲视频免费在线观看| 欧美三级日本三级少妇99| 国产91精品久久久久久久网曝门| 国产日韩欧美精品电影三级在线| av一区二区久久| 亚洲一区二区在线免费看| 日韩视频永久免费| 成人av手机在线观看| 亚洲在线免费播放| 欧美mv日韩mv国产网站app| 粉嫩aⅴ一区二区三区四区五区 | 色综合久久综合网97色综合| 亚洲午夜精品网| 精品三级av在线| 91在线视频观看| 日本成人中文字幕| 中文字幕免费观看一区| 欧美日韩在线三级| 黑人巨大精品欧美一区| 中文字幕佐山爱一区二区免费| 欧美日韩精品综合在线| 国产乱码精品一区二区三区五月婷 | 经典三级视频一区| 亚洲人成在线播放网站岛国| 欧美一卡在线观看| 95精品视频在线| 麻豆国产一区二区| 亚洲欧美电影一区二区| 精品乱人伦一区二区三区| 色先锋资源久久综合| 黑人巨大精品欧美黑白配亚洲| 玉米视频成人免费看| 久久综合久久鬼色| 欧美人与性动xxxx| 99re成人精品视频| 捆绑紧缚一区二区三区视频| 亚洲欧美日韩一区| 亚洲精品在线观看网站| 欧美在线|欧美| 国产精品18久久久久久久久久久久| 一区二区三区中文免费| 久久久久国产精品人| 在线观看91精品国产麻豆| 不卡一区中文字幕| 国产一区二区三区高清播放| 亚洲成人av在线电影| 国产精品久久毛片av大全日韩| 欧美一区二区三区的| 色欧美日韩亚洲| www.成人在线| 国产精品一品二品| 全部av―极品视觉盛宴亚洲| 日韩码欧中文字| 亚洲国产高清在线| 日韩美女一区二区三区四区| 91国偷自产一区二区三区观看| 国产成人在线视频免费播放| 日韩成人av影视| 亚洲成人免费电影| 一区二区三区欧美日韩| 国产精品色眯眯| 精品国产乱码久久久久久影片| 欧美天天综合网| av在线不卡观看免费观看| 国产揄拍国内精品对白| 青青草97国产精品免费观看| 天天操天天综合网| 亚洲一区二区三区国产| 亚洲欧美国产毛片在线| 亚洲同性gay激情无套| 中文字幕av不卡| 国产欧美一区视频| 国产欧美在线观看一区| 久久日韩精品一区二区五区| 欧美成人bangbros| 日韩一区二区三区视频| 在线播放中文字幕一区| 欧美日韩国产高清一区| 色www精品视频在线观看| 色偷偷成人一区二区三区91 | 一区二区激情视频| 依依成人精品视频| 亚洲激情中文1区| 亚洲精品久久7777| 亚洲一区免费视频| 亚洲va在线va天堂| 亚洲一级电影视频| 天天综合天天综合色| 日韩经典一区二区| 五月综合激情日本mⅴ| 日韩综合小视频| 麻豆国产精品官网| 国产呦精品一区二区三区网站| 精品一区二区三区视频在线观看| 秋霞国产午夜精品免费视频| 麻豆精品在线观看| 国产河南妇女毛片精品久久久| 国产成人鲁色资源国产91色综| 欧美精品1区2区| 欧美一区二区美女| 日韩欧美国产综合| 国产午夜精品久久久久久免费视| 国产精品美女久久久久久2018 | 在线视频你懂得一区二区三区| 色狠狠色噜噜噜综合网| 欧美日韩国产小视频在线观看|