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

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

?? maxii_atoms.v

?? BJ-EPM240V2實驗例程以及說明文檔實驗之十四MAX II的UFM模塊使用實例
?? V
?? 第 1 頁 / 共 4 頁
字號:
        begin
            $display("Error! widthdata parameter must be equal to 16.");
        end

        addr_reg <= 0;

        for (n=0; n < widthdata; n=n+1)
            data_reg[n] <= 1'bx;

        program_pulse <= 0;
        erase_pulse <= 0;
        storage_output <= 0;

        // Initialize UFM
        numwords = 1 << address_width;
        if (init_file == "none")
            for (i=0; i<numwords; i=i+1)
                ufm_storage[i] = 16'hFFFF;   // UFM content is initially all 1's
        else
        begin
            // initialize UFM from memory initialization file (*.mif or *.hex)
            // the contents of the memory initialization file are passed in via the
            // mem* parameters
            ufm_initf_sec1 = {mem16, mem15, mem14, mem13, mem12, mem11, mem10, mem9};
            ufm_initf_sec0 = {mem8, mem7, mem6, mem5, mem4, mem3, mem2, mem1};

            for (mem_cnt = 1; mem_cnt <= sector0_range; mem_cnt = mem_cnt + 1)
            begin
                for (bit_cnt = 0; bit_cnt < widthdata; bit_cnt = bit_cnt + 1)
                begin
                    init_word0[bit_cnt] = ufm_initf_sec0[((mem_cnt-1)*widthdata) + bit_cnt];
                    init_word1[bit_cnt] = ufm_initf_sec1[((mem_cnt-1)*widthdata) + bit_cnt];
                end
                //sector 0
                ufm_storage[mem_cnt-1] = init_word0;
                //sector 1
                ufm_storage[(mem_cnt-1)+sector0_range] = init_word1;
            end
        end
    end

// ALWAYS CONSTRUCT BLOCKS

    // Produce oscillation clock to UFM
    always @(int_osc or i_oscena)
    begin
        if (i_oscena === 'b1)
        begin
            if (first_warning == 1)
            begin
                $display("Info : UFM oscillator can operate at any frequency between 3.33MHz to 5.56Mhz.");
                first_warning = 0;
            end

            if (int_osc === 'b0 || int_osc === 'b1)
                osc_str <= #TOSCMN_PW ~int_osc;
            else
                osc_str <= #TOSCMN_PW 0;
        end
        else
        begin
            osc_str <= #TOSCMN_PW 1;
        end
    end

    // Shift address from LSB to MSB when arshft is '1'; else increment address.
    // (Using block statement to avoid race condition warning; therefore, the
    // order of assignments must be taken care to ensure correct behaviour)
    always @(posedge gated_arclk or negedge devclrn or negedge devpor)
    begin
        if (devpor == 'b0)
            addr_reg = 0;
        else if (devclrn == 'b0)
            addr_reg = 0;
        else if (i_arshft == 'b1)
        begin
            for (i=address_width-1; i >= 1; i=i-1)
            begin
                addr_reg[i] = addr_reg[i-1];
            end
            addr_reg[0] = i_ardin;
        end
        else
            addr_reg = addr_reg + 1;
    end

    // Latest address
    always @(address_tmp)
    begin
        address_now <= address_tmp;
    end

    // Shift data from LSB to MSB when drshft is '1'; else load new data.
    // (Using block statement to avoid race condition warning; therefore, the
    // order of assignments must be taken care to ensure correct behaviour)
    always @(posedge gated_drclk or negedge devclrn or negedge devpor)
    begin
        if (devpor == 'b0)
            data_reg = 0;
        else if (devclrn == 'b0)
            data_reg = 0;
        else if (i_drshft == 'b1)
        begin
            for (j=widthdata-1; j >= 1; j=j-1)
            begin
                data_reg[j] = data_reg[j-1];
            end
            data_reg[0] = i_drdin;
        end
        else
            data_reg = storage_output;
    end

    // Latest data loaded from ufm
    always @(new_read_data)
    begin
        storage_output <= new_read_data;
    end

    // Latest data content in data register
    always @(data_tmp)
    begin
        data_now <= data_tmp;
    end

    always @(posedge int_osc)
    begin
        program_reg <= i_program;
       // PROGRAM has higher precedence than ERASE
        if(i_program !== 'b1)
            erase_reg <= i_erase;
    end

    // Pulse to indicate programing UFM for min of 20ms and max of 40ms
    // (must use blocking statement)
    always @(posedge program_reg)
    begin
        if (program_pulse !== 'b1)
        begin
            program_pulse = 1;
            program_pulse = #(TPPMX) 0;
        end
    end

    // Pulse to indicate erasing UFM for min of 20ms and max of 120ms
    // (must use blocking statement)
    always @(posedge erase_reg)
    begin
        if (erase_pulse !== 'b1)
        begin
            erase_pulse = 1;
            // Create a pulse of TEPMX * 1000 ps
            for (l=1; l < 1000; l=l+1)
            begin
                erase_pulse = #(TEPMX) 1;
            end
            erase_pulse = #(TEPMX) 0;
        end
    end

    // Start updating UFM
    always @(posedge program_pulse)
    begin
        // The write operation is the logical "AND" in UFM
        ufm_storage[address_now] <= data_now & ufm_storage[address_now];
    end


    // Start erasing UFM
    always @(posedge erase_pulse)
    begin
        if (address_now[address_width-1] == 'b0)
        begin
            for (k=0; k<sector0_range; k=k+1)
            begin
                ufm_storage[k] <= 16'hFFFF;  // Data in UFM is erased to all 1's
            end
        end
        else
        begin
            for (k=sector0_range; k<sector0_range*2; k=k+1)
            begin
                ufm_storage[k] <= 16'hFFFF;  // Data in UFM is erased to all 1's
            end
        end
    end

// CONTINUOUS ASSIGNMENT
    and(busy, sys_busy, 'b1);
    and(osc, int_osc, 'b1);
    and(sbdout, i_sbdin, 'b1);
    and(bgpbusy, ctrl_bgpbusy, 'b1);
    and(drdout, data_reg_msb, 'b1);

    assign data_reg_msb = data_tmp[(widthdata-1)];

    assign address_tmp = addr_reg;

    assign data_tmp = data_reg;

    assign new_read_data = ufm_storage[address_tmp];

    assign sys_busy = program_pulse | erase_pulse;

    assign int_osc = osc_str;

    assign gated_arclk = i_arclk & !sys_busy;
    assign gated_drclk = i_drclk & !sys_busy;

endmodule // maxii_ufm
///////////////////////////////////////////////////////////////////////////////
//
// MAXII IO Atom
//
///////////////////////////////////////////////////////////////////////////////
`timescale 1 ps/1 ps

module maxii_io (
                   datain, 
                   oe, 
                   padio, 
                   combout
                  );
   
    input datain;
    input oe;
    output combout;
    inout  padio;
   
    parameter operation_mode = "input";
    parameter bus_hold = "false";
    parameter open_drain_output = "false";
    parameter lpm_type = "maxii_io";
   
    reg prev_value;
    reg tmp_padio;
    reg tmp_combout;
    reg buf_control;

    reg iopen_drain; // open_drain: 1--true, 0--false
    reg ibus_hold; // bus_hold: 1--true, 0--false
    reg [1:0] iop_mode; // operation_mode: 1--input, 2--output, 3--bidir
   
    wire datain_in;
    wire oe_in;
   
    buf(datain_in, datain);
    buf(oe_in, oe);
   
    tri padio_tmp;
   
    specify
        (padio => combout) = (0,0);
        (datain => padio) = (0, 0);
        (posedge oe => (padio +: padio_tmp)) = (0, 0);
        (negedge oe => (padio +: 1'bz)) = (0, 0);
    endspecify
   
    initial
    begin
        prev_value = 'b0;
        tmp_padio = 'bz;

        if (operation_mode == "input")
            iop_mode = 1;
        else if (operation_mode == "output")
            iop_mode = 2;
        else if (operation_mode == "bidir")
            iop_mode = 3;
        else
        begin
            $display ("Error: Invalid operation_mode specified\n");
            iop_mode = 0;
        end

        if (bus_hold == "true" )
            ibus_hold = 1;
        else
            ibus_hold = 0;

        if (open_drain_output == "true" )
            iopen_drain = 1;
        else
            iopen_drain = 0;
    end
   
    always @(datain_in or oe_in or padio)
    begin
        if (ibus_hold == 1)
        begin
            buf_control = 'b1;
            if ( operation_mode == "input")
            begin
                if (padio == 1'bz)
                    tmp_combout = prev_value;
                else
                begin
                    prev_value = padio; 
                    tmp_combout = padio;
                end
                tmp_padio = 1'bz;
            end
            else
            begin
                if (iop_mode == 2 || iop_mode == 3)
                begin
                    if (oe_in == 1)
                    begin
                        if (iopen_drain == 1)
                        begin
                            if (datain_in == 0)
                            begin
                                tmp_padio =  1'b0;
                                prev_value = 1'b0;
                            end
                            else if (datain_in == 1'bx)
                            begin
                                tmp_padio = 1'bx;
                                prev_value = 1'bx;
                            end
                            else   // output of tri is 'Z'
                            begin
                                if (iop_mode == 3)
                                    prev_value = padio;

                                tmp_padio = 1'bz;
                            end
                        end  
                        else  // open_drain_output = false;
                        begin
                            tmp_padio = datain_in;
                            prev_value = datain_in;
                        end
                    end   
                    else if (oe_in == 0)
                    begin
                        if (iop_mode == 3)
                            prev_value = padio;

                        tmp_padio = 1'bz;
                    end
                    else   // oe == 'X' 
                    begin
                        tmp_padio = 1'bx;
                        prev_value = 1'bx;
                    end
                end
			
                if (iop_mode == 2)
                    tmp_combout = 1'bz;
                else
                    tmp_combout = padio;
            end
        end
        else    // bus hold is false
        begin
            buf_control = 'b0;
            if (iop_mode == 1)
            begin
                tmp_combout = padio;
            end
            else if (iop_mode == 2 || iop_mode == 3)
            begin
                if (iop_mode  == 3)
                    tmp_combout = padio;
				
                if (oe_in == 1)
                begin
                    if (iopen_drain == 1)
                    begin
                        if (datain_in == 0)
                            tmp_padio = 1'b0;
                        else if (datain_in == 1'bx)
                            tmp_padio = 1'bx;
                        else
                            tmp_padio = 1'bz;
                    end
                    else
                        tmp_padio = datain_in;
                end
                else if (oe_in == 0)
                    tmp_padio = 1'bz;
                else
                    tmp_padio = 1'bx;
            end
            else
                $display ("Error: Invalid operation_mode specified in MAXII io atom!\n");
            end
        end
   
    bufif1 (weak1, weak0) b(padio_tmp, prev_value, buf_control);  //weak value
    pmos (padio_tmp, tmp_padio, 'b0);
    pmos (combout, tmp_combout, 'b0);
    pmos (padio, padio_tmp, 'b0);

endmodule

//------------------------------------------------------------------
//
// Module Name : maxii_routing_wire
//
// Description : Simulation model for a simple routing wire
//
//------------------------------------------------------------------

`timescale 1ps / 1ps

module maxii_routing_wire (
                               datain,
                               dataout
                               );

    // INPUT PORTS
    input datain;

    // OUTPUT PORTS
    output dataout;

    // INTERNAL VARIABLES
    wire dataout_tmp;

    specify

        (datain => dataout) = (0, 0) ;

    endspecify

    assign dataout_tmp = datain;

    and (dataout, dataout_tmp, 1'b1);

endmodule // maxii_routing_wire

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频你懂的| 亚洲精品国产无天堂网2021 | 亚洲影视资源网| 久久黄色级2电影| 91麻豆swag| 26uuu亚洲| 亚洲成a人片在线观看中文| 国产美女精品人人做人人爽| 97精品国产露脸对白| 久久综合九色综合欧美亚洲| 亚洲网友自拍偷拍| 成人综合婷婷国产精品久久 | 精品国产1区2区3区| 亚洲同性gay激情无套| 精品一区二区三区av| 欧美日韩高清不卡| 亚洲欧美韩国综合色| 国产高清不卡一区| 日韩一区二区免费电影| 亚洲精品伦理在线| jlzzjlzz国产精品久久| 国产亚洲一区字幕| 精品一区二区国语对白| 5月丁香婷婷综合| 午夜视频在线观看一区二区 | 在线播放国产精品二区一二区四区| 久久久99久久精品欧美| 久久99精品国产.久久久久| 欧美二区三区的天堂| 亚洲成人精品在线观看| 欧洲色大大久久| 亚洲日韩欧美一区二区在线| 成人高清视频在线| 欧美国产精品中文字幕| 国产精品99久久久久久久女警| xvideos.蜜桃一区二区| 麻豆91精品91久久久的内涵| 日韩欧美国产系列| 免费在线观看精品| 精品国偷自产国产一区| 精品一区二区久久久| 国产亚洲精品超碰| 懂色av一区二区三区免费观看 | 国产在线一区观看| 亚洲精品在线免费观看视频| 国产一区二区看久久| 久久蜜桃一区二区| 粉嫩在线一区二区三区视频| 国产精品国产三级国产普通话蜜臀| 99久久婷婷国产综合精品| 亚洲色图视频网| 欧美在线视频不卡| 日日噜噜夜夜狠狠视频欧美人| 欧美一区二区视频在线观看2022 | 亚洲激情欧美激情| 欧美日韩高清一区二区| 麻豆成人综合网| 中文字幕欧美日韩一区| 91老司机福利 在线| 性欧美疯狂xxxxbbbb| 日韩欧美中文字幕精品| 成人午夜在线视频| 一区二区三区四区在线播放 | 无码av中文一区二区三区桃花岛| 91精品在线免费| 国产成人精品免费一区二区| 亚洲色图制服丝袜| 精品国产一区久久| 一本大道久久a久久综合| 午夜国产精品一区| 国产偷国产偷亚洲高清人白洁| 91影院在线观看| 青青草成人在线观看| 欧美国产激情二区三区| 欧美日韩精品欧美日韩精品一综合| 久久精品国产网站| 亚洲一区二区四区蜜桃| www欧美成人18+| 欧美性感一区二区三区| 国产久卡久卡久卡久卡视频精品| 亚洲视频香蕉人妖| 久久久不卡影院| 91精品国产综合久久福利软件| 成人综合婷婷国产精品久久免费| 视频一区视频二区中文| 18欧美亚洲精品| 亚洲精品在线免费观看视频| 欧美日韩中文国产| 波多野结衣视频一区| 精品一区二区三区在线视频| 亚洲一区二区欧美| 国产精品美女www爽爽爽| 日韩欧美久久久| 欧美性一二三区| youjizz国产精品| 久草中文综合在线| 亚洲www啪成人一区二区麻豆| 国产精品天干天干在线综合| 精品少妇一区二区三区在线播放| 欧美专区日韩专区| 成人午夜av在线| 国内精品国产成人| 美腿丝袜亚洲色图| 日本中文字幕一区| 亚洲一二三专区| 亚洲丝袜自拍清纯另类| 国产日韩欧美精品在线| 精品国产一区二区亚洲人成毛片| 欧美久久久久久蜜桃| 一本色道久久综合狠狠躁的推荐| 丁香桃色午夜亚洲一区二区三区| 欧美aaaaa成人免费观看视频| 亚洲国产视频a| 一区二区三区成人| 亚洲精品国产第一综合99久久| 国产精品久久毛片a| 中文字幕亚洲精品在线观看| 国产精品国产自产拍高清av王其 | 99国产精品99久久久久久| 国产福利精品导航| 国产成人免费在线| 国产成人av影院| 成人动漫一区二区三区| 9久草视频在线视频精品| www.在线成人| 91蜜桃网址入口| 色婷婷精品久久二区二区蜜臀av| 色婷婷精品久久二区二区蜜臂av | 精品女同一区二区| 精品久久国产老人久久综合| 久久久久久久久久久电影| 精品国产在天天线2019| 国产肉丝袜一区二区| 1区2区3区精品视频| 一区二区三区日本| 日韩高清欧美激情| 捆绑变态av一区二区三区| 国产剧情av麻豆香蕉精品| 成人国产精品免费网站| 日本丶国产丶欧美色综合| 欧美猛男男办公室激情| 日韩精品中文字幕在线不卡尤物| 久久久av毛片精品| 一区二区三区四区不卡在线 | 欧美高清www午色夜在线视频| 日韩欧美综合在线| 成人欧美一区二区三区| 午夜精品久久一牛影视| 国产中文字幕精品| 欧美在线啊v一区| 欧美大肚乱孕交hd孕妇| 日韩理论片一区二区| 蜜臀av一区二区三区| hitomi一区二区三区精品| 欧美人体做爰大胆视频| 国产视频911| 亚洲国产cao| 国产精品自拍一区| 欧美日韩在线观看一区二区| 国产午夜一区二区三区| 亚洲影视在线播放| 懂色中文一区二区在线播放| 欧美人牲a欧美精品| 1区2区3区国产精品| 久久99在线观看| 日本二三区不卡| 欧美国产日韩一二三区| 免费不卡在线视频| 色婷婷av一区二区三区之一色屋| 69堂国产成人免费视频| 亚洲欧洲日产国产综合网| 久久精品久久综合| 91福利小视频| 欧美国产成人精品| 精品亚洲国内自在自线福利| 91福利区一区二区三区| 中文字幕乱码久久午夜不卡| 丝袜美腿亚洲综合| 91国产成人在线| 国产精品欧美一区喷水| 国内久久精品视频| 91精品欧美综合在线观看最新| 国产精品久久久久久一区二区三区| 久久国产生活片100| 欧美精品黑人性xxxx| 综合色天天鬼久久鬼色| 国产精品2024| 精品国产乱码久久久久久老虎 | 国产美女主播视频一区| 91精品国产综合久久精品性色| 亚洲码国产岛国毛片在线| www.欧美亚洲| 欧美极品另类videosde| 国产高清不卡一区| 久久久久久99精品| 91原创在线视频| 国产精品久久久久久久久图文区 | 午夜精品久久久久久不卡8050| 91美女视频网站| 亚洲视频 欧洲视频|