2008/03/29(土)久しぶりにHDL
ALTERA
EPM7032VLC44, EPM7128ELC88を拾ってきたのだが、開発ツールが対応していない模様... orz Xilinxに戻るか...
Xilinx
WebPack ISEを使う. 不慣れだがやるしかない.
parameter文
`defineと違って、パラメタ化のために用いる。ただしmoduleの内側でないとだめぽい。一度ハマった... orz詳しいことは後日調べるとしよう。
補足:`defineだと、変数名の頭にアクサンが必要となる模様。ただしglobalな扱い。parameterはmodule内での宣言が必要 == includeで共通外部ファイルを拾ってくるとかしないと、ファイルをまたがって共通化できない。みたい。
例題
とりあえず作ったのはシリパラ変換。しょぼいw
module top(SCLK, SDI, SDO, SLAT, RST_N, PD); parameter DF_BIT_MSB = 28; input SCLK; input SDI; output SDO; reg SDO ; input SLAT; input RST_N; output [DF_BIT_MSB:0] PD; reg [DF_BIT_MSB:0] PD; reg [DF_BIT_MSB:0] DFF; always @ (posedge SCLK or negedge RST_N) begin if (RST_N == 1'b0) begin DFF <= 0; SDO <= 0; end else begin DFF <= DFF[DF_BIT_MSB-1:0],SDI; SDO <= DFF[DF_BIT_MSB] ; end end always @ (posedge SLAT or negedge RST_N) begin if (RST_N == 1'b0) begin PD <= 0; end else begin PD <= DFF; end end endmodule
さらにadiaryネタ. pre記法は使いづらい. というか, エスケープの仕方や変換のされ方の理解が浅い. >|~|<を使うと、綺麗にpreタグをつかってくれる。>~<だと、変換プロセスが走るようだ。説明とレイが乗っていた気がするが、理解できてなかったようだな。実際に"こう使いたい"と、手を動かし、体で覚えていくしかないわ。何でもかんでもそうだな・・・。