Verilog 注意事項

Verilog

基本語法

型態

全域變數

基本元件

多樣的寫法

指定

assign

always

initial

運算式

分枝

迴圈

模組

函數

Task

陣列

輸出入

觀察

真值表

測試程式

訊息顯示

注意事項

模擬程序

硬體工程

程式範例

Xor

Xor3

全加器

加法器

加減器

快速加法器

乘法器

ALU

閂鎖器

脈衝偵測

計數器

多工器

暫存器群

記憶體

延遲問題

浮點數

狀態機

程式計數器

CPU0-Mini

CPU0

pipeline

工具

QuartusII

Icarus

Veritek

訊息

相關網站

參考文獻

最新修改

簡體版

English

重點:

  1. 軟體是循序的,而硬體是並行的
  2. 硬體要循序,要靠 clock 和 FSM
  3. Verilog 程式碼沒有先後之分
  4. 多用 RTL Viewer 和 ModelSim 觀察自己寫的 code

wire 與 reg

如果是拉線的部分,像是以下範例中的 pcTick pct (.clock(clock), .reset(reset), .pc(pc), .tick(tick)); 語句,乃是採用拉線的方式,此時 module cpu0m 的 pc 與 tick 都不能使用 reg, 只能使用 wire。

因此 reg 只能使用在宣告他的單元之中,因為他是一個暫存器。

module pcTick(input clock, reset, output reg [31:0] pc, 
             output reg [2:0] tick);
    always @(posedge clock) begin
        if (reset) 
          begin
            pc = 0;
            tick = 0;
          end
        else begin
            tick = tick+1;
            if (tick == 6) begin
                tick = 0;
                pc = pc+4;
            end
        end
    end
endmodule

module cpu0m(input clock, reset, output wire [31:0] pc, 
             output wire [2:0] tick, output reg [31:0] ir);
pcTick pct (.clock(clock), .reset(reset), .pc(pc), .tick(tick));
endmodule

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License