Imは4階建ての建物で動作2台のエレベータの をシミュレートするために、PS2キーボードとbasys2での作業のVerilog PS2キーボードからのコードワードとのステートメント(サブ1、2及び3)ラッチ警告によるケース
にこのコードは、各エレベータの内部要求を保存、定義されたCWはPS2キーボードからのコードワードである
paremetersは ps2 keyboard codes
module reg_in2(
input [7:0] cw,
output reg[3:0] reqin_a1,
output reg[3:0] reqin_a2
);
parameter a1_sub = 8'h6b;
parameter a1_1 = 8'h6c;
parameter a1_2 = 8'h75;
parameter a1_3 = 8'h7d;
parameter a2_sub = 8'h70 ;
parameter a2_1 = 8'h69 ;
parameter a2_2 = 8'h72 ;
parameter a2_3 = 8'h7A ;
initial
begin
reqin_a1 = 4'b0;
reqin_a2 = 4'b0;
end
[email protected](cw)
begin
case(cw)
a1_sub: reqin_a1[0] = 1;
a1_1: reqin_a1[1] = 1;
a1_2: reqin_a1[2] = 1;
a1_3: reqin_a1[3] = 1;
a2_sub: reqin_a2[0] = 1;
a2_1: reqin_a2[1] = 1;
a2_2: reqin_a2[2] = 1;
a2_3: reqin_a2[3] = 1;
default: begin
reqin_a1 = reqin_a1;
reqin_a2 = reqin_a2;
end
endcase
end
endmodule
シミュレーションに使用されるキー(PS2キーボードのキー)のための符号語であります私が手の
唯一の警告は
Found 1-bit latch for signal <reqin_a1_0>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems.
The value init of the FF/Latch 0 hinder the constant cleaning in the block reqin_a1_3.
You should achieve better results by setting this init to 1.
Gated clock. Clock net
req_in1/reqin_a2_1_cmp_eq0000 is sourced by a combinatorial pin. This is not
good design practice. Use the CE pin to control the loading of data into the
flip-flop.
私の問題は、エラーが、Basys2の予期しない動作ではありません(reqin_a1とreqin_a2のビット毎に)、私はLEDのがreqin_a1とreqin_a2の値をチェックするために使用しています。 ps2キーボードの設計されたキーのいくつかを押すと、複数のLEDが点灯します。 例:私はPS2キーボード(パラメータa2_2)とreqin_a2で2を押して[0]とreqin_a2 [2] 1 に変更されているが、私は本当に多くのことを試してみたので、私は実際にいくつかの助けに
私はあなたが動作を引き起こす 'cw'シグナルにいくつかの不具合があると思います。あなたの入力方法やFPGAの電気的特性によって引き起こされる可能性があります。そのような問題を避けるために、通常、そのようなすべてのデザインが捨てられます。だから、 'clock'を作り、フロップしてモデルクロックをfpgaクロックにつなぎます。 – Serge
と、btwは値を '1'に設定しますが、決してそれらをクリーニングしないでください。それらを '0'にする方法を提供する必要があります。 – Serge
私は実際に、他の鍵の聴取を止めるためにデバウンサ(またはむしろロック)を使ってパッチ解決策を見つけました。私は時間が足りないので、とにかくあなたのアドバイスをスキップします。 (これはテストコードであり、reqsを1に設定するだけです) –