CPLD

テンプレ

// moduleのポートを設定(PORTはバスでもシグナルでもよい)
module MODULE_NAME (
    PORT1, // in, desc.
    PORT2, // in, desc.
    PORT3 // out, desc.
);

// in / outの設定。ここでバスを明示しなければならない
input selector1;
input A;
input B
output [5:0] data;

// output(wire)とフリップフロップ(reg)の定義。バスを明示しなければならない。
wire [5:0] output;
reg Q;
reg [7:0] COUNTER;
[expression]
endmodule

expression

数値

3'b10 // 3bit 3 (3bit定数:2進数で3)
4'o10 // 4bit 8 (4bit定数:8進数で8)
8'h80 // 8bit 128 (8bit定数:16進数で80)
8'd128 // 8bit 128 (8bit定数:10進数で128)
Z // ハイインピーダンス
X // 不定

always

  • conditionを常に監視し、満たされたらexpressionを実行する
    • regの変数は、expressionの中の代入で<=を使わなければならない
always@ ([condition]) begin
    [expression]
end
  • conditionには立ち上がりエッジや立下りエッジが入ることが多い。
// 立ち上がり
always@ (posedge CLK) begin
    Q <= D;
end
// 立ち下がり
always@ (negedge CLK) begin
    Q <= D;
end

if

if ([condition1]) begin
    [expression1]
end else begin
    [expression2]
end

シグナルのバス化

Q{3:0} <= {Q{2:0}, D};

assign

  • wireの代入に使う(regの代入には<=)
assign O[7:0] = A[7:0] + 8'd1;

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS