色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

generate的用法與結構

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-09-27 09:02 ? 次閱讀

Verilog我思我用】-generate

在使用xilinx官方例程《XAPP585》實現CameraLink接口發送或者接收數據時,有個程序還是值得學習的,下面把這段程序截出來:

genvari;
genvarj;

generate
for(i=0;i<=?(N-1)?;?i?=?i+1)
begin?:?loop0

serdes_7_to_1_diff_sdr?#(
???????.D???(D),
???????.DATA_FORMAT??(DATA_FORMAT))
dataout?(
?.dataout_p????(dataout_p[D*(i+1)-1:D*i]),
?.dataout_n????(dataout_n[D*(i+1)-1:D*i]),
?.clkout_p????(clkout_p[i]),
?.clkout_n????(clkout_n[i]),
?.txclk??????(txclk),
?.pixel_clk??????(pixel_clk),
?.reset?????(reset),
?.clk_pattern????(clk_pattern),
?.datain????(datain[(D*(i+1)*7)-1:D*i*7]));??
end
endgenerate?

主要是generate的用法,整個文件的功能是實現可選多通道數據發送,我們知道Cameralink中對于多通道傳輸時有一部分功能代碼時相同的,只不過需要多通道復用,我們知道generate有一個功能就是重復操作多個模塊的實例引用,當然就適合本例程。

下面我們先講一講generate的用法再結合代碼簡單講解一下,對于generate其實很好理解,只不過寫出來比較難。

generate用法

關鍵字generate和endgenerate(和begin / end類似)作為使用語法的起點,有三種衍生結構,分別為:

generate - for 語句結構

generate - if 語句結構

generate - case 語句結構

使用generate的情況主要如下:

使用 for 循環對模塊進行多次相似實例化

使用參數更改模塊的結構或設計

使用帶有斷言語句進行功能和形式驗證

e1e816aa-3dfc-11ed-9e49-dac502259ad0.png

在這里我們思考一下,generate是在運行中構造重復模塊嗎??

答案是否定的,generate語句不是運行時構造。如果你想一想,這個generate結構實際上是在創建一個重復電路,我們不能即時添加或刪除硬件電路,所以generate在綜合過程中其實是重復構造相似電路,而不是在運行時構造。

下面先按照generate結構分別舉例,然后舉例幾個常用案例。

generate - for語句結構

在使用generate - for語句之前,我們需要先聲明一個變量genvar,用于for循環語句進行判斷。

下面舉兩個不同應用的例子:

e20e0716-3dfc-11ed-9e49-dac502259ad0.png


e229bcae-3dfc-11ed-9e49-dac502259ad0.png

上面兩個模塊功能一樣,第一個是對always 塊進行了循環;第二個則是對實例化時的模塊進行了循環。xorLoop 是 generate 語句模塊名,目的是通過它對循環語句進行層次化引用,所以在上面栗子中的 xorLoop 模塊相對層次名為 xorLoop[0].u_xor(后面會舉例說明)

這里在對比兩個常見的例子:

e254afae-3dfc-11ed-9e49-dac502259ad0.png

上面的例子功能也一樣,一個使用generate...for語句一個使用for語句,關于這兩者區別我會在文章最后總結里說明,大家可以自己先思考。

generate - if語句結構

generate -if 語句結構比較寬松,即不需要對不需要對generate語句進行命名(generate...for主要是對循環語句進行層次化引用) ,也不需要變量genvar。由于 generate - if 語句結構是通過判斷語句執行代碼塊,這就決定了每次最多執行一個代碼塊,這種情況下,可以對各個代碼塊使用相同命名是合法的,且有助于保持對代碼的層次化引用。

需要注意的一點是,在 generate 塊中的判斷條件必須是常量!

e2729a82-3dfc-11ed-9e49-dac502259ad0.png

generate - case

generate - case 語句和 generate - if 語句核心思想都是進行條件判斷,用法基本一致。

和 generate - if 語句一樣,case 判斷條件必須是常量。

e2aadde8-3dfc-11ed-9e49-dac502259ad0.png

下面按照應用場景舉例:

循環生成構造

循環生成構造提供了一種簡單而簡潔的方法來創建模塊項的多個實例,例如模塊實例、分配語句、斷言、接口實例等。你可以把它想象成一臺“克隆機”。

本質上,它是一種特殊類型的for循環,其循環索引變量為 datatype genvar。這是一個有趣的事實- genvar它是一個整數數據類型,僅在綜合時存在并在運行時消失。

我們看到的《XAPP585》的例程就是這種運行結構,下面再舉例看下該語句的特點:

/**Example1*/
/**
*16inputmux
*
*ExampleofhowtouseLoopGenerateConstruct
*/
modulemux_16(
inputlogic[0:15][127:0]mux_in,
inputlogic[3:0]select,
outputlogic[127:0]mux_out
);

logic[0:15][127:0]temp;

//Thefor-loopcreates16assignstatements
genvari;
generate
for(i=0;i

仿真文件如下:

`timescale1ns/1ps
/**
*Testbenchtoexercisethemux_16module.
*Hereweinstantiatethemux4times.Eachinstanceis
*fedadifferentinputwithdifferentinput`select`and
*theoutputisobserved.
*/
moduletb_mux_16;

logicclk;
logic[0:15][127:0]test_in[4];
logic[3:0]test_select[4];
logic[127:0]test_out[4];

inti,j,k;

initialbegin
clk=0;
forever#1nsclk=~clk;
end

initialbegin
//Setinputs
for(i=0;i

我們還可以嵌套generate...for 循環。只需確保genvars將外部循環和內部循環分開使用,并在嵌套的 for 循環中引用這些變量時要小心,這是一個經常犯錯誤的地方。

條件生成構造

條件生成構造允許根據在模塊實例化期間傳遞的參數值更改設計結構。這在為設計創建參數化通用 RTL 模塊時非常有用。

一個簡單的例子:

/**Example2.1*/
/**
*Asimplegenerateexample.ThisparamerterOPERATION_TYPE,
*passedwhenthismoduleisinstantiated,isusedtoselect
*theoperationbetweeninputs`a`and`b`.
*/
moduleconditional_generate
#(parameterOPERATION_TYPE=0)
(
inputlogic[31:0]a,
inputlogic[31:0]b,
outputlogic[63:0]z
);

//Thegenerate-endgeneratekeywordsareoptional.
//Itistheactofdoingaconditionaloperation
//onaparameterthatmakesthisagenerateblock.
generate
if(OPERATION_TYPE==0)begin
assignz=a+b;
end
elseif(OPERATION_TYPE==1)begin
assignz=a-b;
end
elseif(OPERATION_TYPE==2)begin
assignz=(a<

另一個例子 - 我們需要創建一個通用 CRC 生成器的任務。團隊中的其他設計人員應該能夠在 3 個多項式中選擇 1 個進行 CRC 計算。

這是一種方法 - 提供一個名為 CRC_SEL 的參數,該參數在此模塊實例化時使用,此CRC_SEL參數用來選擇在模塊中生成哪個 CRC 函數。通過使用generate而不是簡單的多路復用器,可以節省一堆門電路和觸發器,因為不需要的 CRC 函數不會被實例化。

e2d490ca-3dfc-11ed-9e49-dac502259ad0.png

完整代碼如下:

/**
*CRCgeneratormodule.Selectthedesiredpolynomial
*usingtheCRC_SELparameter.
*
*Defaultpolynomial:x^16+x^15+x^2+1
*CRC_SEL=0:x^16+x^1+1
*CRC_SEL=1:x^16+x^12+x^5+1
*
*USAGE:
*+Strobe`start`whendrivingthefirstvalidbyte
*+Strobe`done`oneclkafterdrivingthelastvalidbyte
*+ThefinalCRCisavailable1clkafterthelastvalidbyte
*isdriven.Thisisthesamecycleyou'lldrive`done`.
*
*/
modulecrc_gen
#(parameterCRC_SEL=0)
(
inputlogicclk,
inputlogicrst,
inputlogicstart,
inputlogicdone,
inputlogic[7:0]data_in,
inputlogic[15:0]crc_in,
outputlogic[15:0]crc_out
);

logic[7:0]data_in_d;
logic[15:0]crc_in_d;

assigncrc_in_d=(start|done)?16'd0:crc_in;
assigndata_in_d=(done)?8'd0:data_in;
always_ff@(posedgeclk)begin
if(rst)begin
crc_out<=?'d0;
????????end
????????else?begin
????????????//?Generate?blocks?are?always?assigned?a?name.?If
????????????//?you?don't?name?the?generate?block,?it?will?be
????????????//?given?a?default?auto?generated?name.
????????????//
????????????//?To?invoke?a?function?within?a?generate?block,
????????????//?hierarchically?call?it?
????????????//?.
crc_out<=?crc_poly.nextCRC16_D8(data_in_d,?crc_in_d);
????????end
????end

????//?Once?again?the?generate-endgenerate?keywords?are?optional
????//?It?is?the?act?of?using?a?parameter,?CRC_SEL,?in?the?case
????//?statement?that?makes?it?a?generate?block
????//
????//?Also?notice?how?all?the?generate?blocks?are?given?the?same
????//?name?`crc_poly`?and?all?the?function?names?are?the?same
????//?`nextCRC16_D8`.?This?is?correct?because?only?one?of?the
????//?function?declarations?is?compiled?in?during?elaboration
????//?phase.
????generate
????case?(CRC_SEL)
????????0:?
????????begin:?crc_poly
????????????//?polynomial:?x^16?+?x^1?+?1
????????????//?data?width:?8
????????????//?convention:?the?first?serial?bit?is?D[7]
????????????function?automatic?[15:0]?nextCRC16_D8;
????????????
????????????????input?[7:0]?Data;
????????????????input?[15:0]?crc;
????????????????reg?[7:0]?d;
????????????????reg?[15:0]?c;
????????????????reg?[15:0]?newcrc;

????????????????d?=?Data;
????????????????c?=?crc;
????????????????
????????????????newcrc[0]?=?d[0]?^?c[8];
????????????????newcrc[1]?=?d[1]?^?d[0]?^?c[8]?^?c[9];
????????????????newcrc[2]?=?d[2]?^?d[1]?^?c[9]?^?c[10];
????????????????newcrc[3]?=?d[3]?^?d[2]?^?c[10]?^?c[11];
????????????????newcrc[4]?=?d[4]?^?d[3]?^?c[11]?^?c[12];
????????????????newcrc[5]?=?d[5]?^?d[4]?^?c[12]?^?c[13];
????????????????newcrc[6]?=?d[6]?^?d[5]?^?c[13]?^?c[14];
????????????????newcrc[7]?=?d[7]?^?d[6]?^?c[14]?^?c[15];
????????????????newcrc[8]?=?d[7]?^?c[0]?^?c[15];
????????????????newcrc[9]?=?c[1];
????????????????newcrc[10]?=?c[2];
????????????????newcrc[11]?=?c[3];
????????????????newcrc[12]?=?c[4];
????????????????newcrc[13]?=?c[5];
????????????????newcrc[14]?=?c[6];
????????????????newcrc[15]?=?c[7];
????????????????nextCRC16_D8?=?newcrc;
????????????endfunction
????????end
????????1:
????????begin:?crc_poly
????????????//?polynomial:?x^16?+?x^12?+?x^5?+?1
????????????//?data?width:?8
????????????//?convention:?the?first?serial?bit?is?D[7]
????????????function?automatic?[15:0]?nextCRC16_D8;
????????????
????????????????input?[7:0]?Data;
????????????????input?[15:0]?crc;
????????????????reg?[7:0]?d;
????????????????reg?[15:0]?c;
????????????????reg?[15:0]?newcrc;

????????????????d?=?Data;
????????????????c?=?crc;
????????????????
????????????????newcrc[0]?=?d[4]?^?d[0]?^?c[8]?^?c[12];
????????????????newcrc[1]?=?d[5]?^?d[1]?^?c[9]?^?c[13];
????????????????newcrc[2]?=?d[6]?^?d[2]?^?c[10]?^?c[14];
????????????????newcrc[3]?=?d[7]?^?d[3]?^?c[11]?^?c[15];
????????????????newcrc[4]?=?d[4]?^?c[12];
????????????????newcrc[5]?=?d[5]?^?d[4]?^?d[0]?^?c[8]?^?c[12]?^?c[13];
????????????????newcrc[6]?=?d[6]?^?d[5]?^?d[1]?^?c[9]?^?c[13]?^?c[14];
????????????????newcrc[7]?=?d[7]?^?d[6]?^?d[2]?^?c[10]?^?c[14]?^?c[15];
????????????????newcrc[8]?=?d[7]?^?d[3]?^?c[0]?^?c[11]?^?c[15];
????????????????newcrc[9]?=?d[4]?^?c[1]?^?c[12];
????????????????newcrc[10]?=?d[5]?^?c[2]?^?c[13];
????????????????newcrc[11]?=?d[6]?^?c[3]?^?c[14];
????????????????newcrc[12]?=?d[7]?^?d[4]?^?d[0]?^?c[4]?^?c[8]?^?c[12]?^?c[15];
????????????????newcrc[13]?=?d[5]?^?d[1]?^?c[5]?^?c[9]?^?c[13];
????????????????newcrc[14]?=?d[6]?^?d[2]?^?c[6]?^?c[10]?^?c[14];
????????????????newcrc[15]?=?d[7]?^?d[3]?^?c[7]?^?c[11]?^?c[15];
????????????????nextCRC16_D8?=?newcrc;
????????????endfunction
????????end
????????default:?
????????????begin:?crc_poly
????????????//?polynomial:?x^16?+?x^15?+?x^2?+?1
????????????//?data?width:?8
????????????//?convention:?the?first?serial?bit?is?D[7]
????????????function?automatic?[15:0]?nextCRC16_D8;
????????????
????????????????input?[7:0]?Data;
????????????????input?[15:0]?crc;
????????????????reg?[7:0]?d;
????????????????reg?[15:0]?c;
????????????????reg?[15:0]?newcrc;

????????????????d?=?Data;
????????????????c?=?crc;
????????????????
????????????????newcrc[0]?=?d[7]?^?d[6]?^?d[5]?^?d[4]?^?d[3]?^?d[2]?^?d[1]?^?d[0]?^?c[8]?^?c[9]?^?c[10]?^?c[11]?^?c[12]?^?c[13]?^?c[14]?^?c[15];
????????????????newcrc[1]?=?d[7]?^?d[6]?^?d[5]?^?d[4]?^?d[3]?^?d[2]?^?d[1]?^?c[9]?^?c[10]?^?c[11]?^?c[12]?^?c[13]?^?c[14]?^?c[15];
????????????????newcrc[2]?=?d[1]?^?d[0]?^?c[8]?^?c[9];
????????????????newcrc[3]?=?d[2]?^?d[1]?^?c[9]?^?c[10];
????????????????newcrc[4]?=?d[3]?^?d[2]?^?c[10]?^?c[11];
????????????????newcrc[5]?=?d[4]?^?d[3]?^?c[11]?^?c[12];
????????????????newcrc[6]?=?d[5]?^?d[4]?^?c[12]?^?c[13];
????????????????newcrc[7]?=?d[6]?^?d[5]?^?c[13]?^?c[14];
????????????????newcrc[8]?=?d[7]?^?d[6]?^?c[0]?^?c[14]?^?c[15];
????????????????newcrc[9]?=?d[7]?^?c[1]?^?c[15];
????????????????newcrc[10]?=?c[2];
????????????????newcrc[11]?=?c[3];
????????????????newcrc[12]?=?c[4];
????????????????newcrc[13]?=?c[5];
????????????????newcrc[14]?=?c[6];
????????????????newcrc[15]?=?d[7]?^?d[6]?^?d[5]?^?d[4]?^?d[3]?^?d[2]?^?d[1]?^?d[0]?^?c[7]?^?c[8]?^?c[9]?^?c[10]?^?c[11]?^?c[12]?^?c[13]?^?c[14]?^?c[15];
????????????????nextCRC16_D8?=?newcrc;
????????????endfunction
????????end
????endcase
????endgenerate

endmodule:?crc_gen

下面是仿真文件及結果:

`timescale1ns/1ps
/**
*Testbenchtoexercisethemux_16module.
*Hereweinstantiatethemux4times.Eachinstanceis
*fedadifferentinputwithdifferentinput`select`and
*theoutputisobserved.
*/
moduletb_mux_16;

logicclk;
logic[0:15][127:0]test_in[4];
logic[3:0]test_select[4];
logic[127:0]test_out[4];

inti,j,k;

initialbegin
clk=0;
forever#1nsclk=~clk;
end

initialbegin
//Setinputs
for(i=0;i
e3cfa3a2-3dfc-11ed-9e49-dac502259ad0.png

斷言和形式驗證

generate - case 語句結構在編寫斷言時也非常有用,這反過來有助于形式驗證。

如果對形式驗證有任何經驗,那么就會知道形式工具在嘗試證明屬性時很快就會遇到計算界限。因此,重要的是要保持屬性簡短而簡單。

例如,如果有一個具有 8 個 REQquest 輸入和 8 個 ACK 輸出的仲裁器塊,那么與其編寫單個斷言來覆蓋所有 8 個 REQ/ACK 對,不如將其分解為具有 1 個 REQ/ACK 的 8 個單獨的斷言對。

/**Example3.1*/
genvark;
generate
for(k=0;kack[k]);
end
endgenerate

分層訪問生成塊

絆倒人們的一件事是如何訪問位于生成塊內的模塊項。

生成塊有一個名字。如果不為其命名,編譯器將自動分配一個通用名稱,例如genblk01,genblk02通常必須轉儲 wave 并查看Visualizer工具以查看分配了哪些名稱。

要訪問生成塊中的模塊項,必須分層訪問它.

這是來自 SystemVerilog LRM 1800-2012 的一個很好的示例(示例 4 第 27.5 節)。查看如何訪問塊中定義的任務和模塊實例。

分層實例名稱為:

memory.word16[3].p,memory.word16[2].p,
memory.word16[1].p,memory.word16[0].p,
/**Example4*/
moduledimm(addr,ba,rasx,casx,csx,wex,cke,clk,dqm,data,dev_id);
parameter[31:0]MEM_WIDTH=16,MEM_SIZE=8;
...
genvari;
case({MEM_SIZE,MEM_WIDTH})
{32'd8,32'd16}://8Megx16bitswide
begin:memory
for(i=0;i<4;?i=i+1)?begin:word16
????????????????sms_08b216t0?p(.clk(clk),?.csb(csx),?.cke(cke),.ba(ba),
????????????????????.addr(addr),?.rasb(rasx),?.casb(casx),
????????????????????.web(wex),?.udqm(dqm[2*i+1]),?.ldqm(dqm[2*i]),
????????????????????.dqi(data[15+16*i:16*i]),?.dev_id(dev_id));
????????????????//?The?hierarchical?instance?names?are:
????????????????//?memory.word16[3].p,?memory.word16[2].p,
????????????????//?memory.word16[1].p,?memory.word16[0].p,
????????????????//?and?the?task?memory.read_mem
????????????end
????????????task?read_mem;
????????????????input?[31:0]?address;
????????????????output?[63:0]?data;
????????????????begin?//?call?read_mem?in?sms?module
????????????????????word[3].p.read_mem(address,?data[63:48]);
????????????????????word[2].p.read_mem(address,?data[47:32]);
????????????????????word[1].p.read_mem(address,?data[31:16]);
????????????????????word[0].p.read_mem(address,?data[15:?0]);
????????????????end
????????????endtask?
????????end
????...
????endcase
endmodule

總結

這篇文章是在閱讀《XAPP585》代碼時候看著generate語法極其方便,所以引出了該篇文章,下面說下generate...for和for的區別:

首先第二個代碼時錯誤的!

只有當 for 循環在 generate 中時,才能將 always 放在 for 循環中!

generate for 循環和常規 for 循環之間的主要區別在于 generate for 循環是為每次迭代生成一個實例。這意味著在示例中將有 3 個 always 塊(與常規循環情況下的 1 個塊相反)。

一個更好的例子是:

moduleA();
..
endmodule;

moduleB();
parameterNUM_OF_A_MODULES=2;//shouldbeoverridenfromhigherhierarchy
genvari;
for(i=0i

在此示例中,常規 for 無法完成創建 NUM_OF_A_MODULES 實例的工作。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8579

    瀏覽量

    151029
  • 數據
    +關注

    關注

    8

    文章

    7006

    瀏覽量

    88944
  • 代碼
    +關注

    關注

    30

    文章

    4780

    瀏覽量

    68529

原文標題:【Verilog我思我用】-generate

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    定時器/計數器的 Programmable pulse generate (PPG) mode,尋求詳解!急!!!

    generate (PPG) mode 不懂,希望得到幫助。還有,希望能有好心人推薦一些詳細介紹單片機硬件工作原理和用法的資料。 非常感謝!!!
    發表于 10-10 11:54

    Labview 事件結構中級用法 ,用戶事件。

    Labview事件結構中級用法,用戶事件。源代碼如下,版本是2015
    發表于 09-14 08:23

    verilog中generate語句的用法分享

    、assign、always、task等語句或者模塊進行復制。在generate語句中可以引入if-else和case語句,根據條件不同產生不同的實例化。在設計中,很多情況下需要編寫很多結構相同但是參數
    發表于 12-23 16:59

    講一講generate用法

    ), .clk_pattern (clk_pattern), .datain (datain[(D*(i+1)*7)-1:D*i*7]));endendgenerate主要是generate用法,整個
    發表于 09-29 15:06

    Using References to Generate O

    This application report describes the process for using references to generate offsets forTexas Instrument’s TLC55XX family data converters.
    發表于 06-02 08:39 ?13次下載

    DAC and Op Amp Generate Variab

    Abstract: This design idea describes a simple circuit to generate a programmable negative control
    發表于 04-20 15:16 ?763次閱讀
    DAC and Op Amp <b class='flag-5'>Generate</b> Variab

    How to Generate PWM Waveforms

    of microcontrollers to generate desired PWM waveforms. The action will require that the compare functionality be enabled. The note includes
    發表于 04-23 16:16 ?1300次閱讀
    How to <b class='flag-5'>Generate</b> PWM Waveforms

    DAC and Op Amp Generate Variab

    Abstract: This design idea describes a simple circuit to generate a programmable negative control
    發表于 05-07 09:16 ?2032次閱讀
    DAC and Op Amp <b class='flag-5'>Generate</b> Variab

    Typedef用法小結

    非常不錯的文檔有著基本數據類型結構體enum與函數指針等等的Typedef相關用法.
    發表于 11-02 11:36 ?19次下載

    Delphi資源生成器Delphi Resource Generate免費下載

    Delphi Resource Generate用來生成我們經常使用的資源文件。省去了去使用命令brcc32.exe的麻煩!提高效率很重要!
    發表于 12-12 14:54 ?1次下載
    Delphi資源生成器Delphi Resource <b class='flag-5'>Generate</b>免費下載

    Verilog generate語句的類型

    Generate 結構在創建可配置的RTL的時候很有用。Generate loop能夠讓語句實例化多次,通過index來控制。而conditional generate能夠選擇
    的頭像 發表于 03-16 14:34 ?2.2w次閱讀
    Verilog <b class='flag-5'>generate</b>語句的類型

    generate語句的基本概念與用法

    生成語句(GENERATE)是一種可以建立重復結構或者是在多個模塊的表示形式之間進行選擇的語句。由于生成語句可以用來產生多個相同的結構,因此使用生成語句就可以避免多段相同結構的VHDL
    的頭像 發表于 11-21 07:08 ?5892次閱讀

    C語言結構用法很多,但是坑也很多

    C語言結構用法很多,坑也很多
    的頭像 發表于 01-13 16:06 ?1300次閱讀

    Verilog語法之generate for、generate if、generate case

    Verilog-2005中有3個generate 語句可以用來很方便地實現重復賦值和例化(generate for)或根據條件選擇性地進行編譯(generate if和generate
    的頭像 發表于 12-28 15:21 ?2730次閱讀

    探究寄存機的電路結構以及慣常用法

    *本文將探究什么是寄存器,寄存器的電路結構,寄存器與內存的異同以及寄存器的慣常用法。* ```
    的頭像 發表于 01-30 17:08 ?1103次閱讀
    探究寄存機的電路<b class='flag-5'>結構</b>以及慣常<b class='flag-5'>用法</b>
    主站蜘蛛池模板: 久久vs国产综合色| 国产99视频精品一区| 色久久综合视频本道88| 国产精品综合AV一区二区国产馆| 亚洲精品国偷拍电影自产在线 | 4虎最新网址| 全黄H全肉细节文短篇| 国产片MV在线观看| 艳照门在线观看| 欧美精品九九99久久在观看| 国产精品69人妻无码久久久| 伊人久久大香线蕉资源| 男人J桶进男人屁股过程| 国产电影无码午夜在线播放| 伊人久久精品AV一区二区| 秋霞电影网伦大理电影在线观看 | 翁公吮她的花蒂和奶水| 久久丫线这里只精品| 宝贝你骚死哥了好爽| 亚洲女初尝黑人巨磁链接| 嫩草国产精品99国产精品| 国产麻豆精品人妻无码A片| 中文字幕亚洲男人的天堂网络 | 韩国女人高潮嗷嗷叫视频 | 国产午夜福利伦理300| 57PAO强力打造高清免费| 视频一区国产第一页| 久久热在线视频精品店| 丰满少妇67194视频| 伊人久久中文| 日韩精品亚洲专区在线电影不卡| 精品日韩欧美一区二区三区 | 综合亚洲桃色第一影院| 首页_亚洲AV色老汉影院| 巨乳中文无码亚洲| 国产精品久久久久影院| 97影院午夜午夜伦不卡| 国内精品免费久久影院| 色女孩综合| 久久伊人免费| 国产精品久久婷婷五月色|