目次

メニュー

過去の日記

kondoへのコメント

返信したいコメント選択できるようにしました。

コメントはありません。 Comments/kondo

お名前:

2008年10月23日(木)

SDRAMの残りの作業

たぶん、それほど時間はかからないと思う。

SDRAM,バースト動作で4バイト書込,読込して、PCで確認(UART)

バースト動作で4バイト書込、読込をした。
さらに、この前作ったUARTモジュールで、PCで表示させ確認する。
ようやく成功。。

しかし、なぜか1バイト目がうまく表示されない、
原因は、READモジュールからUARTに値を渡すタイミングが1CLK分ずれていたようだ。

2008年10月20日(月)

CLK生成回路にリセット信号は不必要

今までは、発振器からクロックを生成するモジュールに、リセット信号を入れていた。
理由は、ビヘイビアシミュレーションをする時に初期値を与えるため、だった。

でも、しょうたさんと話して、initial文で、初期値が与えられることを知る。
まだまだ勉強不足だった。
STARCの本を、読んで勉強しよう。

2008年10月18日(土)

UART状態を追加

4バイトバースト動作で書込、読込するSDRAMのテストモジュールに、
作成した連続読み込みできるUARTモジュールを使った状態、を追加する

2008年10月10日(金)

バースト動作の確認

連続した4バイトの書込、読込に成功した。

2008年10月09日(木)

リフレッシュを15.625usごとに必要

25Mを32分周で、1.28uのCLKを利用している。
12回に1回リフレッシュしないといけないのか。

2008年09月26日(金)

Behavioral Simulationに失敗するFATAL_ERROR

FATAL_ERROR:Simulator:Fuse.cpp:164:$Id: Fuse.cpp,v 1.35.4.4.2.1 2008/05/02
FATAL_ERROR:Simulator:Fuse.cpp:164:$Id: Fuse.cpp,v 1.35.4.4.2.1 2008/05/02 17:57:52 jimmyw Exp $ - Failed to link the design	Process will terminate. For technical support on this issue, please open a WebCase with this project attached at http://www.xilinx.com/support.

こうなってしまうと、Clean up Projectをしても、ISEを再起動をしても駄目みたい。
プロジェクトを作り直すのが最良か。

Div[0]を使っていないという警告

CLKを分周するHDLを書いた。
Div[0]を使っていないという警告が出る。
無視してもいい警告のようだが、消したい。

/*
CLKgen
	先生からもらったプログラムを参考にした
	cntの値が何から始まるか分からないので、最初のクロックはいつ立ち上がるか不明(特に問題なし)
*/
module CLKgen( CLKi , CLKo , Div);
	input CLKi; //Clock input
	input [9:0] Div; //10bit => 1024 divider
	output CLKo; //Clock output
	
	reg [8:0] cnt;
	reg CLKo;
	
	wire [8:0] Div2;
	assign Div2 = Div[9:1] ; //posedgeで動作するため、すでに2分周されている。そのため、Divを2で割っておく
	
	always @( posedge CLKi ) begin
		if( cnt == Div2 ) begin
			CLKo <= ~CLKo;
			cnt <= 0;
		end
		else begin
			cnt <= cnt + 1 ; 
		end
	end
	
endmodule

駄目な対処法1・・・wireで適当な信号線を定義して、つないでみる。

assign Div_Dummy = Div[0];

これでもDiv_Dummyが出力されていないから、Div_Dummyに警告が出る
これを消すには、Outputで無駄に信号線を出すしかないか。

駄目な対処法2・・・シフトしてみる

always @( Div ) begin
		Div2 = Div >> 1 ;
	end

ビットシフトするように書いたが、やはりDiv[0]は使われていないという警告消えず。

う〜ん、悩ましい。
とりあえず、警告が出るモジュールだということを記録しておいて、使おう。

posedgeを消してみると

これでも動きそうだけど、分からない警告が出る。

module CLKgen( CLKi , CLKo , Div);
	input CLKi; //Clock input
	input [9:0] Div; //10bit => 1024 divider
	output CLKo; //Clock output
	
	reg [9:0] cnt;
	reg CLKo;

	
	always @( CLKi ) begin
		if( cnt == Div ) begin
			CLKo <= ~CLKo;
			cnt <= 0;
		end
		else begin
			cnt <= cnt + 1 ; 
		end
	end
	
endmodule

今度はこの警告が出た。

 "top.v" line 36: One or more signals are missing in the sensitivity list of always block. To enable synthesis of FPGA/CPLD hardware, XST will assume that all necessary signals are present in the sensitivity list. Please note that the result of the synthesis may differ from the initial design specification.

センシティビティリストの理解が間違っているのかも。。

警告は出来る限り減らす

今まで警告が多すぎて、ほぼ無視してきた。
だけど、警告を見れば、ビット幅のミスなども無くせるので、
出来る限り警告を減らしていくようにしようと思う。

警告が出る場合は、理解して、しっかりメモしておく。
最悪、理解できなくても、警告を記録する。

2008年09月21日(日)23日(火)

モジュール化の続き

(前まで1つのモジュールで作成していた)SDRAMに1バイト書込読込のHDLを、以下のモジュールに分割するHDLを書いた。

ステートマシンの状態遷移もしていない。
CLKだけは正常に生成されている。

いろいろやってみるが、解決できず。
困った。
明日、新しくHDLを書き直してみよう。


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