目次

メニュー†

↑

kondoへのコメント†

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

お名前:
↑

過去の日記†

↑

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を書き直してみよう。

↑

2008年08月28日(木)†

↑

SDRAMのINITIAL、READ、WRITEモジュール化†

1バイト読み書きしていたHDLをモジュール化した。
信号線も多いせいか、なかなか時間がかかった。

完成して、シミュレーションはうまく動く。

ただ、実機では状態遷移すらしない。
何か単純なミスをしている予感orz
今日はここで諦める。

↑

2008年08月27日(水)†

↑

書込モジュール、読込モジュールを別々にする†

WRITE、READを、同じモジュールに書いていた。
しかし、後々不便になるので、そろそろモジュール分けようという話

これが案外、大変。。
昼からはこれに費やしたが、
あともう少しかかりそう。今日はここまで。

↑

SDRAMに書き込んだ内容を、PC(シリアル通信)で確認する†

8月6日に、SDRAMに1バイト書込、読込をした。
下2ビットのみの確認だった。
その読み込んだ内容をシリアル通信で確認した。

UARTモジュールは、先生が書いたものを利用させてもらう。

その結果、正しい結果が書込、読込されていることが分かった。

↑

ビット幅に気をつけよう†

しょうもないミスをしてしまった。

topモジュールから、TXモジュールには、8ビットのDinというデータ列を渡す。
呼び出し元topモジュールで、TXモジュールに渡すデータ列Dinのビット幅を1ビットにしていた・・・

呼び出し先のTXモジュールでは、正しいビット幅にしていたこともあって、
気づくのが遅かった。
あー、昨日の昼から、今日の午前中まで、まる1日これに費やしてしまった。(orz

変数を追加する時には、ビット幅に気をつけよう。。

#ちなみに、View RTL Schematicを見て、気づいた。

↑

ビット幅の注意点†

↑

2008年08月23日(土)†

↑

READ時、DQの値を、DQinに格納する†

READ時、DQの値を、DQinに格納して、
DQinをUARTのTXモジュールを使って、出力しようと思う。

regでDQinを宣言し、READ状態の時、

DQin <= DQ

としている。

ところが、おかしい。
どうもDQの値が、すぐにDQinに入ってくれない。

下の写真のように

2788457789_9f0ac277b5_o.jpg

オシロで見てみると、
DQin0の波形がなまっているような、かんじか。

2789311258_0029befc8c_o.jpg

何でだろう。
DQinに出力するのはやめるか。

↑

UARTモジュール[235]†

野手さん経由で、UARTモジュールのverilogファイルをもらった。
後々のことを考えて、miniUARTではなく、こちらを使うことにする。

このUARTモジュールの処理内容は、大体、掴めた。

↑

連続した文字列を送ることができない†

エコーを返してみる。
いろいろ試してみると、連続した文字を送信できないようだ。

2クロックに1ビットを送信するようになっているが、

count=19,ストップビット送信
count=20,終了処理
count=0,送信準備
count=1,スタートビット送信

連続して送ってしまうと、ストップビット送信後、3クロックを要する。

これを解決するためには、4クロックで1ビット送信するように書き換える必要があるのかな。

↑

2008年08月22日(金)†

↑

verilogからVHDLのモジュールを呼び出す†

miniUARTというIPコアを利用したい。
IPコアはVHDLで提供されているようなので、
試しにverilogからVHDLを呼び出してみる。

verilogからVHDLモジュールを呼び出す時に、
ポートリストは必ず.SW(SWi)のようにする必要があるようだ。

LED_test LED_test( SWi , LEDi );

このときには以下のエラーが出る。

ERROR:Xst:1858 - Ordered port connections are not yet supported from verilog to VHDL. Please give explicit names to your port connections for instance led_test.

参考:ボード & IP サポート掲示板 [One Topic All View / Re[1]: USB-IPをVerilogデザインの中で使いたい / Page: 0]
http://www.fpga.co.jp/XCM/cbbs/cbbs.cgi?mode=al2&mo=271&namber=269&space=15&rev=1&page=0&no=0&KLOG=1#F

↑

2008年08月06日(水)†

↑

SDRAMの1バイトの書込、読込に成功†

1バイトの下2ビットをロジアナで観測しながら、書込、読込に成功した。
ここまで時間かかったな。。(汗

080805-SDRAM1.JPG

��(バンク0の0行目の)0番地に、DQ1=1、DQ0=0を書込
��1番地に、DQ1=0、DQ0=1を書込
��0番地をREAD、(CASレイテンシ)2クロック後に、DQ1=1、DQ0=0を読込
��1番地も、DQ1=0、DQ0=1を読込

↑

2008年08月01日†

↑

シミュレーションの波形が表示されない†

シミュレーション結果は、正しく出力されているのだが、
波形は1000nsecまでしか表示されていない。

Cleanup project file

をして駄目だったので、プロジェクトを作り直したら、
うまく動いた。

こういう時は、冷静に

  1. Cleanup project file
  2. プロジェクトを作り直す
↑

2008年07月26日†

↑

シミュレーション波形が1000nsまでしか見られない?→そんなことはないようだ†

ISE WebPACKで、
波形を確認するツールを使うと、
1000nsまでの波形しか見ることができない。

This is a Lite version of ISE Simulator(ISim).

と書いてあるし、機能制限なのだろうか。
テストベンチの、50000行までの制限はあるらしいけど。

どうやら勘違いのようだ。
初期設定では1000nsまでしか見られないが、
以下の所から変更することができた。

080726-Simulation.JPG
↑

(チルダ)が見えなくなる問題†

ISE標準のエディタを使っていると、~(チルダ)がまったく
見えなくなることがあるようだ。
コピーして、他のエディタで見れば、分かるみたい。

↑

2008年07月23日(水)†

↑

xilinxのISE WebPACKから印刷することができない問題?†

印刷しようとしても、印刷できない。
原因不明・・・?

その上、その後プリンタの調子がおかしかった。
他の人まで印刷できなかったり?した。

このソフトが原因かどうかまでは定かではない。

↑

verilog,正しい論理合成結果が得られない問題†

ステートマシンを書き、状態遷移させるHDLを書いた。
その後、状態に応じた制御信号を出力させた。

最初は、うまく出力されなかった。
どうやらデコード方式のステートマシンが、
ワンホット方式のステートマシンへ最適化されたらしい。
そのときに、出力されるはずの制御信号が、消されたらしい。

原因は、よく分からないが、HDLを書き換えたりしていると、
デコード方式の論理合成結果になった。
何だったんだろう。

↑

2008年07月22日(火)†

↑

PACEの使い方が分かっていない?†

配置配線のピン配置を決める時に、「PACE」というソフトが使う。
このソフトでピン配置を決めて、後にポートリストを変更後、
再度ピン配置を決めると前のピン配置のデータが残ってしまうようだ。

しかも、ピン配置を変更しても、どこかにデータが残っているらしく、
必ず警告に遭遇してしまう。

top.ucfを直接見ても、何も書いていないはずのピンにエラーが・・・
よく分からない。

↑

2008年07月11日(金)†

↑

表面実装部品のはんだづけ†

秋田先生にコツを教えてもらいチャレンジ
結構時間がかかったけど、コツを掴めば、SDRAMのはんだづけはスムーズに終わった。

が、カメラモジュールの半田付けがうまくいかない。
問題は、ランドの位置と、カメラモジュールにわずかな隙間ができてしまうようだ。

PCBEで設計する時にぴったりにしすぎたせいのようだ。
何か解決方法を考えなければ。。


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