問題タブ [vga]
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.
assembly - x86 アセンブリを使用して vga テキスト画面の半分を入れ替えます
上半分と下半分を交換することになっています。私のコードはこれを行いますが、問題は最後の行が「C:>FILE_NAME」であるはずです。しかし、その行の C は最後から 2 番目にあります。また、1行が欠けています。CX の数値をいじってみましたが、どこにも行きません。コードは次のとおりです。
vhdl - このコードでクロック ホールドを修正するにはどうすればよいですか?
VHDL で VGA ドライバを作成しようとしています。
640x480 @ 60 Hz を使用するので、25 MHz と 31.5 KHz のクロックが必要です。divider_h
プロセスは 50 MHz クロックで駆動され、結果として 25 MHz クロックになります。25 MHz クロックの各ティックでh_counter
、プロセスによってインクリメントされ、ある値 ( )h_sync
に達すると、プロセスが開始され、短時間の間 1 に設定されます。H_FRONT + H_SYNC - 1
divider_v
clock_v
Quartus II のタイミング解析が失敗し、次の警告が表示されます。1 つのパスに沿って最小セットアップおよびホールド要件クロックを達成できません。コンパイル レポートのクロック ホールドv_counter
セクションは、最小スラック タイムが -0.050 ns のMSB が原因であると指摘しています。2 番目に低いスラック タイムは 0.218 ns で、問題ありません。
短い 0 状態に対して長い 1 状態を使用しようとしましたがclock_v
、最小スラック時間が -0.019 ns に増加しましたが、これはまだ許容できません。
私が理解しているように、ホールドクロックの問題は、入力が正しく処理される前に変更されることを意味するため、1と0の両方をほぼ同じ期間表示しようとしました。驚いたことに、40 以上のパスが同じエラーで赤くなりました。
v_clock
プロセスをコメントアウトすると、問題が解決します。
MSB のスラック タイムが他のビットよりもはるかに長いのはなぜですか? この問題を解決するにはどうすればよいですか?
これが私のコードです:
失敗したパスの詳細:
- から:
v_counter[9]
- に:
v_counter[9]
- クロックから:
clock
- クロックするには:
clock
- 必要なホールド関係: 0.000 ns
- 必要な最短 P2P 時間: 0.618 ns
- 実際のショート P2P 時間: 0.568 ns
- 最小スラック: -0.050 ns
v_counter
ですbit_vector(9 downto 0)
。このパスでLocate in Designを使用すると、Quartus はv_clock
プロセスの最初の行 ( のある行) を指しrising_edge(clock_v)
ます。
また、すべてのh_counter
ビットに言及するリップル クロックに関する警告clock_h
と、3 つのゲート クロック: Equal0
、Equal0~1
およびEqual0~0
.
assembly - DIY カーネルを起動した後の VGA メモリの問題
これは私のプロジェクトの構造です:
- "boot.asm" : 64 ビット モードに入り、CHS を読み取り、"kernel" を 0x100000 にロードしてから、0x100000 に jmp します
- 「kernel.asm」
これは「kernel.asm」です:
このコードは、「boot.asm」に入れると機能します。しかし、「kernel.asm」に配置すると、奇妙なグリフまたは「S」のみが出力されます...理由はわかりません。問題は「msg」宣言にあるようです。たとえば、" msg: db "K" " を " msg equ "K" " に置き換えると、適切な文字が出力されますが、問題がわかりません。何か提案はありますか?
乾杯、
verilog - Verilog VGA ドライバーが原因で画面がちらつく (Basys2)
Verilog で Adventure(1979) を再作成しようとしていますが、これまでのところ、キャラクターの移動、衝突、およびマップの生成が行われています。マップをモジュールに分割する前はそれほどちらつきませんでしたが、今では常にちらつきます。この問題を調べていたところ、Basys2 ボードのクロックがかなりうるさく、原因である可能性があることがわかりました。ただし、マップをモジュールに入れても、何かを台無しにしない限り、悪化することはありませんでした。何が起こったのですか?
これが私のマップジェネレーターです:
startCastle は次のとおりです。
トップモジュールに接続されているVGAドライバーは次のとおりです。
clk_div:
clk_shift:
c - VGA : C でのポインタとメモリのアドレス指定 (DIY カーネル)
私の質問は、自作カーネルで VGA に書き込もうとするときの C ポインターの使用に関する基本的な理解についてです。コードはここにあります:アセンブリ ブートローダーから C カーネルを呼び出します)
私の main.c カーネルでは、このコードが機能する理由がわかりません。
これではありません:
そうでなければ、この例で配列の代わりにポインターを使用する同等の方法はありますか?