81
i f ( rst ) begin
y <= Y0 ;
end el se begin
y <= y_next ;
end
// holat reestri
always @(posedge c l k )
i f ( rst ) begin
state<= S0 ;
end el se begin
state<= s tate_next ;
end
endmodule
Mili avtomatini mos Mur avtomatiga aylantirilish mumkin va aksincha. 6.5-
rasmda 6.4-rasmda ko‘rsatilgan Mili avtomatining
funksionalligini amalga
oshiradigan Mur avtomatining o‘tish grafi ko‘rsatilgan. Olingan Mur avtomatining
o‘tish jadvali 6.3-jadvalda keltirilgan.
83
Natijani saqlash uchun operandlar kengligidan ikki baravar katta sig‘imga
ega bo‘lgan registrni belgilash talab qilinishi muhimdir. Bu formatning to‘lib
ketishi va noto‘g‘ri natijalarni oldini olish uchun kerak.
"Ustunli" ko‘paytirish algoritmining sxemasi 6.7-rasmda ko‘rsatilgan.
N
belgisi 6.7-rasmda
a
va
b
operandlarning xonaligini bildiradi. Yig‘indini
qisman qiymat
miqdori har bir qadamda
part_res
o‘zgaruvchisiga joylashtiriladi.
Algoritmda qadamlarining hisoblagichi sifatida
ctr
o‘zgaruvchisi ishlatiladi.
Qo‘yidagi
b[ctr]
ifoda ikkinchi
b
operandidan
ctr
bit xonasini olishni bildiradi.
Bitlar 0 dan boshlab nomerlanadi.
Hisoblash oxirida natija
result
o‘zgaruvchisiga
joylashtiriladi.
Endi
apparatli
ko‘paytirish
blokini
loyihalashtirishga
kirishiladi.
Birinchidan, blok interfeysi aniqlanadi. Hisob-kitoblar bosqichma-bosqich amalga
oshirilganligi sababli, hisoblash bloklarini ishga tushirishga kerak bo‘lgan signal
(
start_i
), blokning hisob-kitoblar bilan bandligini aniqlaydigan signal (
busy_o
),
shuningdek, qayta boshidan o‘rnatish signali (
rst_i
) va takt (
clk_i
) signallari kerak.
Algoritmni bosqichma-bosqich amalga oshirish
uchun takt signali yoki
sinxronizatsiya signali talab qilinadi va har bir qadam
clk_i
signalining keyingi
musbat chekkasi (fronti) kelishi bilan bajariladi.
Bundan tashqari, operandlarning
qiymatlarini (
a_bi
va
b_bi
) blokga berish uchun kirish ma’lumotlar shinalari,
shuningdek, hisob-kitoblar natijalarini uzatish uchun bitta chiqish shinalari (
y_bo
)
kerak bo‘ladi. Masalan, operandlar 8 bitli(xonali) ihorasiz
butun sonlar deb faraz
qilinsa, chiqish ma’lumotlar shinasi 16 bitli (xonali) bo‘ladi, ya’ni operandlarning
xonaligidan ikki baravar katta bo‘lishi kerak. Loyihalanayotgan blokning interfeysi
6.8-rasmda ko‘rsatilgan.
85
6.9-rasm. Ko‘paytirish blokining boshqaruv bloki avtomatining o‘tish grafi.
Boshqarish mashinasi ikkita holatga ega: kutish (
IDLE
) va ish (
WORK
).
IDLE
holatida blok
start_i
boshqaruv signalining kelishini kutadi va hisob-
kitoblarning boshlanishiga o‘tadi. Algoritmning barcha bosqichlari
WORK
holatida
amalga oshiriladi.
Taqdim
etilgan grafikda, har bir o‘tishning yuqorisida, o‘tish sharti
ko‘rsatilgan va y_bo va busy_o chiqish signallarining
qiymati chiziq bilan
ajratilgan. Shunday qilib, masalan, (
start_i
== 1) shart bajarilganda
, IDLE
holatidan
WORK
holatiga o‘tish amalga oshiriladi.
Y_bo
chiqishida oldingi qiymat
saqlanib qoladi va
busy_o
signali 1 ga o‘rnatiladi.
Ko‘paytirish algoritmining Verilog HDL dasturi 6.3 listingda ko‘rsatilgan.
Taqdim etilgan tavsifda keyingi holatni yaratish mantig‘i,
holat registri va Mili
avtomatining chiqish qiymatlarini yaratish mantig‘i bitta protsessual blokga
birlashtirilgan.
Listing 6.3 - Verilog HDL dagi ko‘paytirish blokining tavsifi
module mult (
input clk_i ,
input rst_i ,
input [ 7 : 0 ] a_bi ,
input [ 7 : 0 ] b_bi ,
input star t_i ,