2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩119頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、語法詳細講解強制激勵,在一個過程塊中,可以用兩種不同的方式對信號變量或表達式進行連續(xù)賦值。 過程連續(xù)賦值往往是不可以綜合的,通常用在測試模塊中。 兩種方式都有各自配套的命令來停止賦值過程。 兩種不同方式均不允許賦值語句間的時間控制。 assign和deassign 適用于對寄存器類型的信號(例如:RTL級上 的節(jié)點或測試模塊中在多個地方被賦值的信號)進行賦值。 initial begin

2、 #10 assign top.dut.fsml.state_reg = `init_state;,#20 deassign top.dut.fsml.state_reg; endforce 和 release 用于寄存器類型和網(wǎng)絡連接類型(例如:門級掃描寄存器的輸出)的強制賦值,強制改寫其它地方的賦值。 initial begin # 10 force top.dut.co

3、unter.scan_reg.q=0; # 20 release top.dut.counter.scan_reg.q; end 在以上兩個例子中,在10到20 這個時間段內,網(wǎng)絡或寄存器類型的信號被強制賦值,而別處對該變量的賦值均無效。force的賦值優(yōu)先級高于assign。如果先使用assign,再使用force對同一信號賦值,則信號的值為force所賦 的值,,語法詳細講解強制激勵,

4、語法詳細講解字符串,語法詳細講解強制激勵,語法詳細講解強制激勵,當執(zhí)行release后,則信號的值為assign所賦 的值。如果用force對同一個信號賦了幾次值,再執(zhí)行release,則所有賦的值均不再存在??梢詫π盘柕哪常ù_定)位、某些(確定)位或拼接的信號,使用force和release賦值;但不能對信號的可變位使用force和release 來賦值。不能對寄存器類型的信號某位或某些位使用 assign 和deassi

5、gn 來賦值。,語法詳細講解強制激勵,語法詳細講解建立時鐘,雖然有時在設計中會包含時鐘,但時鐘通常用在測試模塊中。下面三個例子分別說明如何在門級和行為級建立不同波形的時鐘模型。[例1] 簡單的對稱方波時鐘:,語法詳細講解建立時鐘,reg clk;always begin #period/2 clk=0; #period/2 clk=1;end,reg go; wire clk;nand #(per

6、iod/2) ul (clk,clk,go);initial begin go=0; #(period/2) go=1;end,注:在有些仿真器中,如果設計所用的時鐘是由與其相同抽象級別的時鐘模型產(chǎn)生的,則仿真器的性能就能得到提高。,[例2]簡單的帶延遲的對稱方波時鐘:,語法詳細講解建立時鐘,reg clk;initial begin clk=0; #(

7、period) forever #(period/2) clk=!clk end,reg go; wire clk;nand #(period/2) ul (clk,clk,go);initial begin go=0; #(period) go=1;end,注:這兩個時鐘模型有些不同,行為描述的模型延遲期間一直是低電平,而

8、門級描述的模型開始延遲有半個周期是不確定的。,語法詳細講解建立時鐘,[例3]. 帶延遲、頭一個脈沖不規(guī)則的、占空比不為1的時鐘:,語法詳細講解建立時鐘,reg clk;initial begin #(period+1) clk=1; #(period/2-1) forever begin #(period/4) clk=0; #(3*period/4) clk=1;

9、endend,reg go; wire clk;nand #(3*period/4,period/4) ul(clk,clk,go);initial begin #(period/4+1) go=0; #(5*period/4-1) go=1;end,注:這兩個時鐘模型也有些不同,行為描述的模型一開始就有確定的電平,而門級描述的模型有延遲開始時電平是不確定的。,語法詳細講解怎樣使用任務,mocule bus

10、_ctrl_tb reg [7:0] data; reg data_valid, data_rd; cpu ul(data_valid,data,data_rd); initial begin cpu_driver(8’b0000_0000); cpu_driver(8’b1010_1010); cpu_driver(8’b0101_0101);

11、 end task cpu_driver;,語法詳細講解怎樣使用任務,語法詳細講解怎樣使用任務,input [7:0] data_in; begin #30 data_valid=1; wait(data_rd==1); #20 data=data_in; wait(data_rd==0);

12、 #20 data=8’hzz; #30 data_valid=0; end endtask,語法詳細講解怎樣使用任務,語法詳細講解怎樣使用任務,endmodule 在測試模塊中使用任務可以提高程序代碼的效率,可以進行多次重復操作。,語法詳細講解怎樣使用任務,,,,,,,,,,,,,,,,,,,,,,,,wait,wait,wait,wait,data1

13、,data2,data3,data4,cpu_data,clk,data_valid,data_read,read_cpu_state,語法詳細講解存儲建模,目標學會使用Verilog進行存儲建模。學會在Verilog中進行雙向口建模。,語法詳細講解存儲建模,存儲設備建模必須注意以下兩個方面的問題:聲明存儲容量的大小。提供對內容的訪問權限,例如: 只讀 讀寫 同步讀寫

14、多次讀,同時進行一次寫 多次同步讀寫,同時提供一些方法保證一致性,,,,,,語法詳細講解存儲設備建模,myrom.v `timescale 1ns/10ps module myrom(read_data,addr,read_en_); input read_en_;

15、 input [3:0] addr; output [3:0] read_data; reg [3:0] read_data;reg [3:0] mem [0:15];initial $readmemb(“my_rom_data”,mem);always @ (addr or r

16、ead_en_) if(!read_en_) read_data=mem[addr];endmodule,語法詳細講解簡單ROM建模,my_rom_data 0000 0101 1100 0011 1101 0010 0011 1111 1000 1001 1000 0001 1101 1010 0001 1101,ROM

17、的數(shù)據(jù)存儲在另外的一個獨立的文件中,,,語法詳細講解簡單ROM建模,上面所示的ROM模型中使用二維的存儲寄存器來定義存儲容量。ROM中的數(shù)據(jù)保存在一個獨立的文件中,如上面的右邊所示。這是一種保存ROM數(shù)據(jù)的通用的方法,它可以使數(shù)據(jù)和ROM模型分開。,語法詳細講解簡單RAM建模,`timescale 1ns/1nsmodule mymem(data,addr,read,write); inout [3:0] data;

18、inout [3:0] addr; input read, write; reg [3:0] memory [0:15]; //4 bits, 16 words//read assign data=read? memory[addr]:4’bz;//write always @ (posedge write) memory[addr]=data;endmodule,RAM模型比ROM模型稍微復雜,

19、因為它必須具有讀寫能力,而進行讀寫時通常使用相同的數(shù)據(jù)總線,這就需要新技術來處理雙向總線。當讀出口沒有被激活時,RAM模型不再激勵總線,如果此時的總線寫入變量也沒有被激活,則總線進入高阻狀態(tài),這就避免了RAM中的讀寫競爭。,上述模型是可綜合的,但是許多工具只產(chǎn)生一系列的寄存器,這一般就需要更大的空間,從而比實際的存儲器的價格更昂貴。,語法詳細講解簡單RAM建模,例:module scalable_ROM(mem_word,addre

20、ss); parameter addr_bits=8; //size of address bus parameter wordsize=8; //width of a word parameter words=(1<<addr_bits); //size of mem output [wordsize:1] mem_wo

21、rd; //word of memory input [addr_bits:1] address; //address bus reg [wordsize:1] mem [0:words-1]; //mem declaration//output one word of memory wire [wordsize:1] mem_word=mem[address];

22、endmodule,語法詳細講解容量可變的存儲器建模,語法詳細講解容量可變的存儲器建模,上述的例子演示了怎樣通過設置字長和地址位數(shù)來定義一個只讀存儲設備。 在上例中,存儲字的范圍從0開始的,而不是從1開始,這是因為內存是直接通過地址線定位的,同樣地,也可以用下面的方法來定義內存和定位: reg [wordsize:1] mem [1:words]; //memory starts at word

23、1//address must be incremented to address all words in memory wire [wordsize:1] mem_word=mem[address+1];,可以通過使用一個循環(huán)或系統(tǒng)任務來載入存有數(shù)據(jù)的整個存儲器。

24、 使用循環(huán)把值賦給存儲數(shù)組。 for(i=0;i<memsize;i=i+i) // initialize memory mema[i]={wordsize{1’b1}};調用$readmem系統(tǒng)任務。 //load memory data form a file $readmemb(“m

25、em_file.txt”,mem);,語法詳細講解載入存儲設備,語法詳細講解怎樣使用雙向口,使用inout關鍵字聲明雙向口。 inout [7:0] databus;使用雙向口需要遵循下面的規(guī)則:一個inout口只能聲明為網(wǎng)絡類型,而不能是寄存器類型的。 因此仿真器能確定多個激勵源的最終值。在設計中,每次只能激活inout的一個方向。 例如:當使用總線讀R

26、AM中的數(shù)據(jù)時,同時又向RAM模 型的雙向數(shù)據(jù)總線寫數(shù)據(jù),就會產(chǎn)生邏輯競爭,導致總 線脫離。 必須為inout口設計控制邏輯,用來保證正確的操作。,,,語法詳細講解怎樣使用雙向口,注:可以聲明一個inout口,用來輸入或輸出數(shù)據(jù)。inout口默認為網(wǎng)絡類型,不可以對網(wǎng)絡類型的數(shù)據(jù)進行過程賦值,但可以在過程塊外對寄存器數(shù)據(jù)類型進

27、行連續(xù)賦值,或者把它與元器件相連。必須為inout口設計控制邏輯,用來保證正確的操作。當把inout口做為輸入口時,必須使輸出邏輯失效。,使用元器件,語法詳細講解雙向口建模,en_a_b,en_b_a,bus_a,bus_b,module bus_xcvr (bus_a,bus_b,en_a_b,en_b_a);inout bus_a,bus_b;input en_a_b,en_b_a; bufifl b1(bu

28、s_b,bus_a,en_a_b); bufifl b2(bus_a,bus_b,en_b_a);//結構模塊邏輯endmodule,當en_a_b=1時,元器件b1激活,bus_a的值傳到bus_b上,當en_b_a=1時,元器件b1激活,bus_b的值傳到bus_a上,語法詳細講解雙向口建模,注:在上頁的例子中,使用了en_a_b和en_b_a 來控制元器件bufifl,如果進行同時控制,則得不到預期的結果。,,使用連續(xù)賦

29、值,en_a_b,en_b_a,bus_a,bus_b,module bus_xcvr (bus_a,bus_b,en_a_b,en_b_a);inout bus_a,bus_b;input en_a_b,en_b_a; assign bus_b=en_a_b? bus_a:’bz; assign bus_a=en_b_a? bus_b:’bz;//結構模塊邏輯endmodule,當en_a_b=1時,bus

30、_a的值傳到bus_b上,當en_b_a=1時,bus_b的值傳到bus_a上,語法詳細講解雙向口建模,注:在assign語句中,通過en_a_b和en_b_a控制bus_a與bus_b之間的數(shù)據(jù)交換。 如果進行同時控制,則得不到預期的結果。,語法詳細講解雙向口建模,存儲口建模,語法詳細講解雙向口建模,測試模塊,RAM單元,數(shù)據(jù)總線,數(shù)據(jù)寄存器,rd,wr,module ram_cell(databus,rd.w

31、r);inout databus;input rd,wr;reg datareg; assign databus=rd? datareg:’bz; always @(negedge sr) datareg<=databus;endmodule,當rd等于1時datareg的值被賦給databus,當wr的下降沿到達時,databus的值被寫入datareg,,,,注:上頁存儲單元在wr的下降沿到達時存入數(shù)據(jù)

32、。上頁模塊在 wr處于高電平時,通過數(shù)據(jù)總線寫入數(shù)據(jù),但必須保證wr的高電平維持時間長于數(shù)據(jù)的寫入時間。 在rd處于高電平時,上述存儲單元通過數(shù)據(jù)總線讀出數(shù)據(jù)。由于此模型為單口存儲模型,因此wr和rd不能同時為高電平,否則就得不到預期的結果。,語法詳細講解雙向口建模,目標學會怎樣定義或調用任務和函數(shù)。學會怎樣使用命名塊。學會怎樣使命名塊和任務失效。熟悉有限狀態(tài)機及怎樣進行有限狀態(tài)機顯式建模。,語法詳細講解第十七

33、部分 Verilog中的高級結構,可以通過把代碼分成小的模塊或者使用任務和函數(shù),來把一項任務分成許多較小的、易于管理的部分,從而提高代碼的重用性。任務 一般用于執(zhí)行調試操作,或者行為的描述硬件 可以包含時間控制(# delays, @, wait) 可以包含input, output 和 inout參數(shù) 可以調用其他的任

34、務或函數(shù)函數(shù) 一般用于計算,或者用來代替組合邏輯 不能包含任何延遲;函數(shù)在零時間執(zhí)行 只能使用input參數(shù),但可以通過函數(shù)名來返回一個值。 可以調用其他的函數(shù),但不可以調用任務,語法詳細講解第十七部分 Verilog中的高級結構,注:必須在模塊內調用任務和函數(shù)。在任務和函數(shù)中不能聲明連線類型的變量。所有的輸入和輸

35、出都是真正的本地寄存器類型的數(shù)據(jù)。只有當任務或函數(shù)調用并執(zhí)行完后,才能有返回值。例如:當任務或函數(shù)中包含一個forever循環(huán)時,就不可能有返回值。,語法詳細講解第十七部分 Verilog中的高級結構,語法詳細講解Verilog 任務,下面的任務含有時間控制和一個輸入,并且指向一個模塊變量,但是不包含輸出、總線和內部變量,不顯示任何內容。 時間控制中使用的信號(例如 clk)不必是任務的輸入,這是因為輸入值只向任務內部

36、傳遞一次。 module top; reg clk, a, b; DUT u1(out, a, b, clk); always #5 clk=!clk; task neg_clocks; input [31:0] number_of_edges; repeat(

37、number_of_edges),語法詳細講解整數(shù)和實常數(shù),@(negedge clk); endtask initial begin clk=0; a=1; b=1; neg_clocks(3); //任務調用 a=0; neg_clocks(5);

38、 b=0; end endmodule主要特征:任務調用是通過在Verilog模塊中寫入任務名來實現(xiàn)的。任務中可以包含input, output和inout參數(shù)。,語法詳細講解Verilog 任務,傳遞給任務的參數(shù)與任務I/O聲明參數(shù)的順序相同。雖然傳遞給任務的參數(shù)名可以和任務內部I/O聲明的參數(shù)名相同,但是為了提高任務的模塊化程度,傳遞給任務的參數(shù)名通常是唯一的,而

39、不使用與任務內部I/O聲明的參數(shù)名相同的參數(shù)名。在任務中可以使用時間控制。在Verilog中,任務定義了一個新的范圍。使用關鍵字disable禁止任務。注意:不要在程序的不同部分同時調用同一個任務。這是因為任務只有一組本地變量,同時調用兩次將會導致錯誤。這種情況通常發(fā)生在使用時間控制的任務中。 在任務或函數(shù)中,應給在父模塊中聲明的變量加注釋。若在其它模塊中調用任務或函數(shù),任務和函數(shù)中所使用的變量必須包含在輸入/輸

40、出口列表中。,語法詳細講解Verilog 任務,下面模塊中的任務含有一個雙口總線和一個內部變量,但是沒有輸入、輸出和定時控制,沒有引用本模塊的變量,不顯示任何內容。 在任務調用時,任務參數(shù)(口)類型被視為內部寄存器類型。 parameter MAX_BITS=8; reg [MAX_BITS:1] D; task reverse_bits; inout [7:0

41、] data; //雙口總線被視為寄存器類型! integer K; for (k=0; k<MAX_BITS; K=K+1) reverse_bits [MAXBITS – (K+1)=data[K]; endtask always @ (posedge clk) reverse_bits (D);

42、 ……,語法詳細講解Verilog 任務,下面模塊中的任務含有輸入、輸出、時間控制和一個內部變量,并且引用了一個本模塊的變量,但是沒有輸出,不顯示任何內容。 任務調用時的參數(shù)順序應與任務定義中聲明的順序相同。 module mult(clk, a, b, out, en_mult); input clk, en_mult; input [3:0] a, b; output

43、[7:0] out; reg [15:0] out; always @ (posedge clk) multme(a, b, out); //任務調用,語法詳細講解Verilog 任務,task muotme; //任務定義 input [3:0] xme, tome; output [7:0] result;

44、 wait (en_mult) result=xme*tome; endtask endmodule,語法詳細講解Verilog 任務,module orand(a, b, c, d, e, out); input [7:0] a, b, c, d, e; output [7:0] out; reg [7:0] out; always @ (

45、a or b or c or d or e) out=f_or_and(a, b, c, d, e); //函數(shù)調用 function [7:0] f_or_and; input [7:0] a, b, c, d, e; if(e==1) f_or_and=(a|b)&(c|d); el

46、se f_or_and=0; endfunctionendmodule,語法詳細講解Verilog 函數(shù),雖然函數(shù)不能包含定時控制,但是可以在包含定時控制的過程塊中調用函數(shù)。 在上述函數(shù)中使用了函數(shù)名f_or_and作為寄存器類型的變量。要點函數(shù)定義不能包含定時控制語句。函數(shù)必須含有輸出,但不能含有輸出和總線口;一個函數(shù)只能返回一個值,該值的變量名與函數(shù)同名,數(shù)據(jù)

47、類型默認為reg類型。傳遞給函數(shù)參數(shù)的順序與函數(shù)輸入?yún)?shù)聲明的順序相同。函數(shù)定義必須包含在模塊定義之內。函數(shù)不能調用任務,但任務可以調用函數(shù)。函數(shù)使Verilog有更廣闊的適用范圍。,語法詳細講解Verilog 函數(shù),雖然函數(shù)只能返回一個值,但是它們的返回值可以直接的賦給一個信號拼接,從而使它們有多個輸出。 {o1, o2, o3, o4}=f_or_and(a, b, c, d, e);,語法詳細講

48、解Verilog 函數(shù),語法詳細講解命名塊,可以通過在關鍵字begin或fork后加上:〈塊名〉來給塊命名。 module named_blk; …… begin :seq_blk …… end …… fork : par_blk …… join

49、 …… endmodule可以在命名塊中聲明本地變量??梢允褂胐isable禁止命名塊。,注意:命名塊使Verilog有更廣闊的適用范圍。命名塊的使用縮短了仿真的時間。,語法詳細講解命名塊,語法詳細講解禁止命名塊和任務,module do_arith(out, a, b, c, d, e, clk, en_mult);input clk, en_mult;input [7:0] a, b,

50、 c, d, e;output [15:0] out;reg [14:0] out; always @(posedge clk) begin : arith_block //***命名塊*** reg [3:0] tmp1, tmp2; //***本地變量*** {tmp, tmp2}=f

51、_or_and(a, b, c, d, e); // 函數(shù)調用 if(en_mult) multme(tmp1, tmp2, out); //任務調用 end always @(negedge en_mult) begin //停止計算 disable multme; //***禁止任務的執(zhí)行***

52、 diable arith_block; //***禁止命名塊的執(zhí)行*** end //在此定義任務和函數(shù)endmodle,注意:disable語句用來終止命名塊或任務的執(zhí)行,因此可以在執(zhí)行所有的語句前,就能從命名塊或任務的執(zhí)行中返回。 語法: disable 〈塊名〉 或 disable 〈任務名〉禁止執(zhí)行命名塊或任務后,

53、所有在事件隊列中安排的事件都將被刪除。在綜合中一般不支持disable語句。在上頁的例子中,只禁止命名塊也可以得到預期的結果:命名塊中所有的事件、任務和函數(shù)的執(zhí)行都將被取消。,語法詳細講解禁止命名塊和任務,語法詳細講解有限狀態(tài)機(FSM),隱式FSM:不需要狀態(tài)寄存器仿真更加有效只能很好的處理線形狀態(tài)改變大部分綜合工具不支持隱式FSM,state 1,state 2,state 3,state 4,,,,,,,語法詳細

54、講解編譯引導語句,顯式FSM:結構更加復雜可以很方便的用來處理默認狀態(tài)能夠處理復雜的狀態(tài)改變所有的綜合工具均支持顯式FSM,語法詳細講解有限狀態(tài)機(FSM),state A,state A,state A,state A,state A,,,,,,,,注意:在隱式 FSMs 中,無論什么時候在一個時鐘周期內寫數(shù)據(jù)和在在另一個時鐘周期內讀數(shù)據(jù),都會創(chuàng)建寄存器。所有的 FSMs 都必須能復位,狀態(tài)改變必須與一個單一的時鐘信

55、號同步。一般的,如果狀態(tài)改變比較簡單,又定義的比較好,而且綜合工具支持隱式狀態(tài)機,就可以使用隱式類型。如果狀態(tài)改變比較復雜,最好使用顯式類型,這樣會更加有效。隱式狀態(tài)機應屬于行為級,而不應屬于RTL級,代碼中主要包含循環(huán)、嵌入的定時控制,有時也含有命名事件、wait 和 disable 語句。因此,綜合中一般不支持隱式機。,語法詳細講解有限狀態(tài)機(FSMs),語法詳細講解Verilog 函數(shù),要返回一個矢量值(超過一個位寬),可

56、以在函數(shù)名前聲明變量的位寬。在函數(shù)中,將語句放在 begin 和 end 塊中。 在函數(shù)中無論多少次對函數(shù)名進行賦值,值只返回一次。下面的函數(shù)中聲明了一個內部整型變量。 module foo; input [7:0] loo; output [7:0] goo; //可以從連續(xù)賦值中調用函數(shù) wire [7:0] goo=zero_count(loo); fu

57、nction [3:0] zero_count; input [7:0] in_bus;,語法詳細講解Verilog 函數(shù),integer I; begin zero_count=0; for(I=0; I<8; I=I+1) if(!in_bus[I]

58、) zero_count=zero_count+1; end endfunction endmodule,可以聲明函數(shù)的返回值的類型為 integer、real 或 time, 可以在任何表達式中調用函數(shù)。 module checksub(neg, in_a, in_b); output neg;

59、 reg neg; function integer_subtr; input [7:0] in_a, in_b; subtr=in_a-in_b; //結果可能是負數(shù) endfunction always @(a or b) if(subtr(a, b)<0)

60、 neg=1; else neg=0; endmodule,語法詳細講解Verilog 函數(shù),可以給返回變量的每一位賦值,還可以參數(shù)化函數(shù)的大小、函數(shù)口、甚至函數(shù)的行為。 ... parameter MAX_BITS=8; reg [MAX_BITS:1] D; function [MAX_BITS:1]

61、 reverse_bits; input [7:0] data; integer K; for(K=0; K<MAX_BITS; K=K+1) reverse_bits [MAX_BITS-(K+1)]=data[K]; endfunction always @(posedge

62、 clk) D=reverse_bits(D); ...,語法詳細講解Verilog 函數(shù),語法詳細講解顯式有限狀態(tài)機,module exp(out, datain, clk, rst);input clk, rst, datain;output out; reg out;ret state;always @(pasedge clk or posedge rst) if(rst)

63、 {state, out}=2’b00; else case(state) 1’b0: begin out=1’b0; if(!datain) state=1’b0; else state=1’b1; end 1’b1 begin,狀態(tài)變量,,語法詳細

64、講解顯式有限狀態(tài)機,case語句,,out=datain; state=1’b0; end default: {state, out}=2’b00; endcaseendmodule注:可以在過程塊中使用一個單一的時鐘沿和一個 case 語句來描述一個顯式狀態(tài)機。必須規(guī)定一個狀態(tài)變量,用來定義狀態(tài)機的狀態(tài)。要改變當前的狀態(tài),必須改

65、變狀態(tài)變量的值,狀態(tài)變量的值的改變要與時鐘沿同步。最好為通常不會發(fā)生的狀態(tài)規(guī)定默認動作。,語法詳細講解顯式有限狀態(tài)機,轉到下一個狀態(tài),,默認狀態(tài)指針,,module imp(out, datain, clk, rst);output out; reg out;input clk, datain, rst;always @(rst) //協(xié)同復位方法 if (rst) assing out=1’b0;

66、 else begin deassign out; disable seq_block; //返回到初始狀態(tài) endalways @(posedge clk),語法詳細講解隱式有限狀態(tài)機,begin: seq_block out=1’b0; if(!datain) //狀態(tài)一:輸出零

67、 disable seq_block; @(posedge clk) //狀態(tài)二:輸出第二位 out=datain; endendmodule,語法詳細講解隱式有限狀態(tài)機,注意:可以在過程塊使用多個時鐘沿(一個狀態(tài)一個)、條件語句、循環(huán)語句、disable語句來描述隱式FSM。不

68、必定義一個狀態(tài)變量。若沒有強制狀態(tài)重復(例如:在循環(huán)語句或disable語句中強制狀態(tài)重復),當下一個激活時鐘沿到達時,狀態(tài)改變。下一個裝態(tài)將由條件語句決定。在隱式狀態(tài)機中,很難規(guī)定一個默認動作。,語法詳細講解隱式有限狀態(tài)機,目標學會怎樣創(chuàng)建邏輯使用的用戶定義的原語。用戶定義的原語 (UDP) 的行為與嵌入的 Verilog 原器件相似,可以用一個表格來定義它的功能。,語法詳細講解第十八部分 用戶定義的原語,在 Veril

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論