kondo

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を見て、気づいた。

ビット幅の注意点

  • 変数、入力出力信号を定義するとき
  • case文の数値を変更する時
    • ↑結構はまりやすい
  • 呼び出し元のビット幅も要確認

2008年08月23日(土)

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

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

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

DQin <= DQ

としている。

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

下の写真のように

  • DQin0・・・5クロック遅れ
  • DQin1・・・1クロック遅れ
    になっている。
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.
  • verilog
    module top( SWi , LEDi );
    input SWi;
    output LEDi;
    
    //LED_test LED_test( SWi , LEDi );
    LED_test LED_test( .SW(SWi) , .LED(LEDi) );
    
    endmodule
  • VHDL
    library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;
    use IEEE.STD_LOGIC_ARITH.ALL;
    use IEEE.STD_LOGIC_UNSIGNED.ALL;
    
    ---- Uncomment the following library declaration if instantiating
    ---- any Xilinx primitives in this code.
    --library UNISIM;
    --use UNISIM.VComponents.all;
    
    entity LED_test is
    port (
    	SW : in std_logic;
    	LED : out std_logic);
    end LED_test;
    
    architecture Behavioral of LED_test is
    begin
    	LED <= SW;
    end Behavioral;

参考:ボード & 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ビットをロジアナで観測しながら、書込、読込に成功した。
ここまで時間かかったな。。(汗

#ref(): File not found: "080805-SDRAM1.JPG" at page "kondo/2008年7・8月"

(バンク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までしか見られないが、
以下の所から変更することができた。

#ref(): File not found: "080726-Simulation.JPG" at page "kondo/2008年7・8月"

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

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

2008年07月23日(水)

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

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

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

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

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

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

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

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

2008年07月22日(火)

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

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

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

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

2008年07月11日(金)

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

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

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

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


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-10-02 (日) 11:12:58