とりあえず簡単なところから書いていくとする
ハードウェア言語において関数みたいなものとしてモジュールというものがある。基本的にモジュール単位でファイル作るのが最初はイイと思う。
とりあえずモジュールの書き方は作成するモジュール名がtestなら
module test(clk ,rst , , ,);
モジュールの中身
endmodule
といった書き方になる。rstにつづくものはそのモジュールにおける引数、出力になる。,で区切ること。あと必ずしもclk,rst必要はないのであしからず。
次に回路の構成になるがまず、変数の型としてwireとregがある。
wireはただ単にデータをつなげる、regは値を保存するためにとだけ理解しておけばまずよい。
データの大きさとしてはainという名前の4bit幅のwireを宣言するなら
wire[3:0] ain;
といった形になる。
あと値の代入に関して、ブロッキング代入(=)、ノン・ブロッキング代入(<=)があるが、とりあえずハードウェア記述言語に慣れるまではwire型はブロッキング、regはノンブロッキングとして統一しておいたほうがいい。(混乱すると思う)
で実際どういう風に使うというと
wire [3:0] ain;
assign ain = ain + 4'h6;
reg [5:0] cnt;
always(posedge clk or negedge rst)begin
if(!rst)
cnt <= 6'h0;
else
cnt <= cnt + 6'h1;
end