- 1. ΠΠΈΠ±ΠΈΠ»ΠΎ Π. Π., ΠΡΠ½ΠΎΠ²Ρ ΡΠ·ΡΠΊΠ° VHDL: Π£ΡΠ΅Π±Π½ΠΎΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅ — Π.: ΠΠ½ΠΈΠΆΠ½ΡΠΉ Π΄ΠΎΠΌ «ΠΠΠΠ ΠΠΠΠ», 2012. -300c.
- 2. ΠΠΈΠ±ΠΈΠ»ΠΎ Π. Π., Π ΠΎΠΌΠ°Π½ΠΎΠ² Π. Π., ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΡ
ΡΡΡΡΠΎΠΉΡΡΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΎΠ½Π½ΠΎ-ΡΡΠ΅ΠΉΠΌΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π½Π°Π½ΠΈΠΉ — ΠΠΈΠ½ΡΠΊ: ΠΠ΅Π»Π°ΡΡΡ. Π½Π°ΡΠΊΠ°, 2011. -240c.
- 3. ΠΠΎΠΉΠΊΠΎ Π. Π. Π‘Ρ
Π΅ΠΌΠΎΡΠ΅Ρ
Π½ΠΈΠΊΠ° ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ. ΠΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ — Π‘.ΠΠ±.: Π Π₯Π-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³, 2004. — 99c.
- 4. ΠΠ°Π»Π°Π±Π΅ΠΊΠΎΠ² Π. Π., ΠΠ°ΠΌΠ·Π΅Π»Π΅Π² Π. Π. Π¦ΠΈΡΡΠΎΠ²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡΠ.: Π Π°Π΄ΠΈΠΎ ΠΈ ΡΠ²ΡΠ·Ρ, 2008. — 400c.
- 5. ΠΡΡΠ»ΡΠ΅Π²Π° Π. Π., Π¦ΠΈΡΡΠΎΠ²Π°Ρ ΡΡ
Π΅ΠΌΠΎΡΠ΅Ρ
Π½ΠΈΠΊΠ° — Π.: ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠ΅Π½ΡΡ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡ, 2005. — 400c.
- 6. Π£Π³ΡΡΠΌΠΎΠ² Π. Π., ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ·Π»ΠΎΠ² ΠΠΠΠ‘-ΠΠ±.: ΠΠ₯Π-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³, 1987. — 200c.
- 7. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠ²ΡΡ
ΡΡ
Π΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΠΠΠ‘
- 8. VHDL — ΠΎΠ±ΡΡΠ°ΡΡΠΈΠΉ ΠΏΠΎΡΡΠ°Π» Π΄Π»Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
- 9. ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ (ΠΠΠ’Π£ΠΠ’.ΡΡ)
ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ A
ΠΠΈΡΡΠΈΠ½Π³ ΡΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ.
moduleMultiplierUS // ΠΈΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ.
(// Π²Ρ
ΠΎΠ΄Ρ/Π²ΡΡ
ΠΎΠ΄Ρ (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΡΠΈΠ³Π½Π°Π»ΠΎΠ²).
output [15:0] c, // ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΡ
ΠΎΠ΄ Ρ, 16-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ.
outputready,.
input [7:0] a, // ΡΠΈΠ½Π° Π΄Π°Π½Π½ΡΡ
Π°, Π²ΠΎΡΡΠΌΠΈΡΠ°Π·ΡΡΠ΄Π½Π°Ρ.
input [7:0] b, // ΡΠΈΠ½Π° Π΄Π°Π½Π½ΡΡ
b, Π²ΠΎΡΡΠΌΠΈ ΡΠ°Π·ΡΡΠ΄Π½Π°Ρ.
inputclk, // ΡΠ°ΠΊΡΠΎΠ²ΡΠΉ ΡΠΈΠ³Π½Π°Π» Π½Π° Π²Ρ
ΠΎΠ΄Π΅.
inputstart // ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠΈΠΉ Π²Ρ
ΠΎΠ΄.
);
reg [7:0] ar; // ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π³ΠΈΡΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ar, 8-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ.
reg [16:0] cr; // ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π³ΠΈΡΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ cr, 17-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ.
reg [3:0] counter; // ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π³ΠΈΡΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ counter, 4-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ.
wire [16:0] new_cr; // ΡΠ΅ΠΌΠ½Π°Π΄ΡΠ°ΡΠΈΡΠ°Π·ΡΡΠ΄Π½Π°Ρ ΡΠΈΠ½Π° Π΄Π°Π½Π½ΡΡ
Π²ΡΡ
ΠΎΠ΄Π° new_cr.
always @(posedgeclk) // Π°Π½Π°Π»ΠΈΠ· Π½Π°Π»ΠΈΡΠΈΡ ΡΠΈΠ³Π½Π°Π»Π°.
begin // Π½Π°ΡΠ°Π»ΠΎ.
if (start) // ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
//Π΅ΡΠ»ΠΈ=1.
begin // ΡΠΎΠ³Π΄Π°.
ar = a; //Ρ ΡΠΈΠ½Ρ Π΄Π°Π½Π½ΡΡ
Π²Ρ
ΠΎΠ΄Π° Π°, Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡ ar.
cr = {9'b000000000, b}; // ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡ cr.
counter = 0; //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡ counter.
end.
else //ΠΈΠ½Π°ΡΠ΅.
begin.
if (counter ≠ 4'b1001) //Π΅ΡΠ»ΠΈ counter Π½Π΅ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 9dec ΠΈΠ»ΠΈ 1001.
begin // ΡΠΎΠ³Π΄Π°.
cr = new_cr; //ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡ cr ΠΊ ΡΠΈΠ½Π΅ new_cr.
counter = counter + 1; // ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ.
// Π·Π°ΠΏΠΈΡΡ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΠΎΠΉ ΡΡΠΌΠΌΡ Π² ΡΠ΅Π³ΠΈΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° cr ΡΠΎ ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ Π²ΠΏΡΠ°Π²ΠΎ.
end.
end.
end.
assignnew_cr[16:8] = (cr[0]) ?({1'b0, cr[16:9]} + {1'b0, ar}):{1'b0, cr[16:9]};
// ΠΈΠ· ΡΠΈΠ½Ρ new_cr 16:8 ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ΅Π³ΠΈΡΡΡcr0 ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ Π΅ΡΠ»ΠΈ cr0=1 ΡΠΎΠ³Π΄Π° a+b Π΅ΡΠ»ΠΈ ΠΆΠ΅ cr0=0 ΡΠΎ b=0.
assignnew_cr[7:0] = cr[8:1];
//ΠΈΠ· ΡΠΈΠ½Ρ new_cr [7:0] ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ΅Π³ΠΈΡΡΡ cr [8:1].
assignc = cr[15:0]; // ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π²ΡΡ
ΠΎΠ΄ Ρ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ cr [15:0].
endmodule// ΠΊΠΎΠ½Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ.