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タグをつかってくれる。>~<だと、変換プロセスが走るようだ。説明とレイが乗っていた気がするが、理解できてなかったようだな。実際に"こう使いたい"と、手を動かし、体で覚えていくしかないわ。何でもかんでもそうだな・・・。