【正文】
begin out = (a amp。 end 組合邏輯設計要點 ? 組合邏輯的兩種 Verilog HDL表示 : 用 always塊時,沒注意加 else語句: 如: always (al or d) begin if (al==1) q = d 。 用 always 塊: always (al or d) begin if (al==1) q = d 。 硬件沒有對應的電路,因而綜合結果未知 。 end clk DFF c D Q a b 兩種不同的賦值語句區(qū)別要點 ? 不阻塞( nonblocking) 賦值語句 ( b= a): 塊內的 賦值語句同時賦值; b 的值被賦成新值 a 的操作 , 是與塊內其他 賦值語句同時完成的; 建議在可綜合風格的模塊中使用 不阻塞 賦值。 end clk DFF c D Q D Q a b DFF Verilog中兩種不同的賦值語句 ? 阻塞( blocking) 賦值語句: always (posedge clk) begin b = a 。 end endmodule d out2 AND2i1 clk out1 D Q DFF Verilog中兩種不同的賦值語句 ? 不阻塞( nonblocking) 賦值語句: always (posedge clk) begin b = a 。 ~out1 。 wire out2。 output out1, out2。 endmodule a out2 BUFF b INV out1 Verilog中 reg與 wire的不同點 ? 用寄存器 ( reg )類型變量生成觸發(fā)器的 例子 : module rw2( clk, d, out1, out2 ) 。 assign out2 = a 。 reg out1。 input a, b。 它只是在 always 塊中賦值的信號 。 并行和順序 邏輯關系的表示 Verilog模塊中的信號 ? 只有兩種主要的信號類型: 寄存器類型: reg 在 always 塊中被賦值的信號, 往往 代表 觸發(fā)器,但不一定是觸發(fā)器。 else if (en) q= d。 // 1 and2 and_inst ( qout, a, b)。 ~a1 amp。 else if (en) q= d。 用 元件的實例調用: and2 and_inst ( q, a, b)。 ~a1 amp。 ~c )。 ~c) 。 output d, e 。 _______ 編寫 Verilog HDL模塊的練習 a b c d e ? 請在下面的空格中填入適當?shù)姆? 使其成為右圖的 Verilog 模塊 : module block1(a, b, c , d, e )。 assign e = ( b amp。 assign d = a | ( b amp。 input — , — , — 。 ~c )。 功能定義: assign d = a | x 。 output d 。 endmodule Verilog HDL模塊和接口 a b c d e ? Verilog 模塊的結構由在 module和 endmodule 關鍵詞之間的四個主要部分組成: 端口信息: module block1(a, b, c, d )。 assign e = ( b amp。 assign d = a | ( b amp。 input a, b, c。 Verilog 模塊由兩部分組成:端口信息和內部功能。 有關 Verilog HDL的 幾個重要基本概念 5) 布局布線 : 把用 綜合器自動生成的門級網(wǎng)表( EDIF) 通過運行一個自動操作的布局布線工具,使其與具體的某種 FPGA或某種 ASIC工藝庫器件對應起來,并加以連接的過程。 有關 Verilog HDL的 幾個重要基本概念 3)Verilog HDL測試模塊 : 用 Verilog HDL描述的模塊,可以用來產生測試信號序列并可以接收被測試模塊的信號,用于驗證所設計的模塊是否能正常運行,往往不可綜合成具體門級電路。它是符合特定標準和風格的描述狀態(tài)轉移和變化的 Verilog HDL模塊。 有關 Verilog HDL的 幾個重要基本概念 1) 綜合: 通過工具把用 Verilog HDL描述的模塊自動轉換為用門級電路網(wǎng)表表示的模塊的過程。 bin = bin +5。 70 rst=0; 70 rst = 1; end always 50 clk = ~clk。 ain = 0。 myadder(.clock(clk), .reset(rst), .a(ain), .b(bin), .sum(sumout))。 reg [7:0] ain, bin。 end endmodule Verilog HDL模塊的測試 `include module t。 b_reg = b。 sum= ’ b0。 always (posedge clock or negedge reset) if (!reset) begin a_reg = ‘ b0。 reg [width1:0] a_reg, b_reg。 input [width1:0] a, b。 parameter width = 8。 output out。 結構級 module muxtwo (out, a, b, sl)。RTL模塊在每個時鐘的沿時刻,其變量的值必定是精確的。 endmodule a b sl out 行為級和 RTL級 a b sl out 這個行為的描述并沒有說明如果輸入 a 或 b是三態(tài)的(高阻時)輸出應該是什么,但有具體結構的真實電路是有一定的輸出的。 always (sl or a or b) if (!sl) out = a。 output out。 行為級和 RTL級 module muxtwo (out, a, b, sl)。 后仿真: 用門級模型做驗證,檢查門的互連邏輯其功能是否正確。 行