目次
コメントはありません。 Comments/kondo
READ時、DQの値を、DQinに格納して、
DQinをUARTのTXモジュールを使って、出力しようと思う。
regでDQinを宣言し、READ状態の時、
DQin <= DQ
としている。
ところが、おかしい。
どうもDQの値が、すぐにDQinに入ってくれない。
下の写真のように

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

何でだろう。
DQinに出力するのはやめるか。
野手さん経由で、UARTモジュールのverilogファイルをもらった。
後々のことを考えて、miniUARTではなく、こちらを使うことにする。
このUARTモジュールの処理内容は、大体、掴めた。
エコーを返してみる。
いろいろ試してみると、連続した文字を送信できないようだ。
2クロックに1ビットを送信するようになっているが、
count=19,ストップビット送信
count=20,終了処理
count=0,送信準備
count=1,スタートビット送信
連続して送ってしまうと、ストップビット送信後、3クロックを要する。
これを解決するためには、4クロックで1ビット送信するように書き換える必要があるのかな。
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.
module top( SWi , LEDi ); input SWi; output LEDi; //LED_test LED_test( SWi , LEDi ); LED_test LED_test( .SW(SWi) , .LED(LEDi) ); endmodule
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
1バイトの下2ビットをロジアナで観測しながら、書込、読込に成功した。
ここまで時間かかったな。。(汗
��(バンク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を読込
シミュレーション結果は、正しく出力されているのだが、
波形は1000nsecまでしか表示されていない。
Cleanup project file
をして駄目だったので、プロジェクトを作り直したら、
うまく動いた。
こういう時は、冷静に
ISE WebPACKで、
波形を確認するツールを使うと、
1000nsまでの波形しか見ることができない。
This is a Lite version of ISE Simulator(ISim).
と書いてあるし、機能制限なのだろうか。
テストベンチの、50000行までの制限はあるらしいけど。
どうやら勘違いのようだ。
初期設定では1000nsまでしか見られないが、
以下の所から変更することができた。
(チルダ)が見えなくなる問題†
ISE標準のエディタを使っていると、~(チルダ)がまったく
見えなくなることがあるようだ。
コピーして、他のエディタで見れば、分かるみたい。
印刷しようとしても、印刷できない。
原因不明・・・?
その上、その後プリンタの調子がおかしかった。
他の人まで印刷できなかったり?した。
このソフトが原因かどうかまでは定かではない。
ステートマシンを書き、状態遷移させるHDLを書いた。
その後、状態に応じた制御信号を出力させた。
最初は、うまく出力されなかった。
どうやらデコード方式のステートマシンが、
ワンホット方式のステートマシンへ最適化されたらしい。
そのときに、出力されるはずの制御信号が、消されたらしい。
原因は、よく分からないが、HDLを書き換えたりしていると、
デコード方式の論理合成結果になった。
何だったんだろう。
配置配線のピン配置を決める時に、「PACE」というソフトが使う。
このソフトでピン配置を決めて、後にポートリストを変更後、
再度ピン配置を決めると前のピン配置のデータが残ってしまうようだ。
しかも、ピン配置を変更しても、どこかにデータが残っているらしく、
必ず警告に遭遇してしまう。
top.ucfを直接見ても、何も書いていないはずのピンにエラーが・・・
よく分からない。
秋田先生にコツを教えてもらいチャレンジ
結構時間がかかったけど、コツを掴めば、SDRAMのはんだづけはスムーズに終わった。
が、カメラモジュールの半田付けがうまくいかない。
問題は、ランドの位置と、カメラモジュールにわずかな隙間ができてしまうようだ。
PCBEで設計する時にぴったりにしすぎたせいのようだ。
何か解決方法を考えなければ。。