問題タブ [shift-register]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vhdl - VHDL でのシフト レジスタの構造設計
vhdl でシフト レジスタの構造設計を行いました。WriteShift が 1 の場合はシフトを取得し、0 の場合はシフト レジスタが価格をロードします。テストベンチで writeshift を 1 に設定するとロードは完全に機能しますが、シミュレーションでは 00000 になります。
私のコードは次のとおりです。
assembly - カスタム LCD ハードウェアに適合する MCS-51 コード
ROM上にデータがあらかじめ定義されているハードウェアで、キャラクタLCDドライバ(LCDにはHD47780チップセットが搭載されています)を自作し、ROMをロードする回路も作成しました。
下の最初の画像では、ROM メーカー回路の一部 (パラレル ポートを介してコンピューターに接続) が配線され、ROM 上のデータ ピンが LSB (最下位ビット) から MSB の順に次のように配置されます (上位ビット):
A8、A9、A10、A11、A12、A13、A14、A0、A1、A2、A3、A4、A5、A6、A7
この次の画像は、LCD ドライバーの一部です。ROM(Romメーカーで作成)をドライバーに挿入し、シフトレジスタを使用してアドレスを選択し、RSを制御します(LCDがコマンドモードかデータモードか)。
両方のシフト レジスタのクロックは、マイクロコントローラーの 1 つのピンと、クロック ロジック レベルが変化するたびに時間を延長して LCD イネーブル ラインを 220 マイクロ秒間ハイにするタイマーに接続されています。最初のレジスタ (INP) のデータ入力は一緒に接続され、マイクロコントローラの別のピンにも接続されます。CLR 入力を High に接続して、出力を有効にします。
作成した rom テスターで rom の最初の 256 バイトのデータをテストしたところ、出力は正しいので、自分の rom が問題であることはわかりません。問題はコードにあることがわかりました。
これは私のコードです:
LCDC equ (シフト レジスタ GPIO ピンへのクロック) DAT equ (シフト レジスタ データ入力ピン)
関数を呼び出してコマンドを発行するだけです。
またはデータ用
一部のコマンドは実行されているように見えますが (アドレス指定が混同されていない限り)、通常の文字を印刷しようとすると、代わりに奇妙な文字が表示されます。
たとえば、私の ROM では、最初の 256 バイトを同じバイトで埋めました (例: アドレス 0 の値は 00h、アドレス 255 の値は 0FFh)。私が実行した場合:
画面に「A」の文字が表示されるのを見たかったのですが、何も表示されません。
私のコーディングは正しいですか?または私はそれを改善できますか?
私はhttp://plit.de/asem-51/asemw.htmのアセンブラーを使用しているので、それが私だけなのか、それとも一部のアセンブラーにバグがあり、一部を変更および/または削除する必要があるのか わかりませんそれらのアセンブラーを満たすコード。
お知らせ下さい。
ありがとう。

