Kommunikatsiyalarini rivojlantirish vazirligi «vlsi tizimini loyihalashtirish» fanidan amaliy mashg



Yüklə 5,01 Kb.
Pdf görüntüsü
səhifə30/68
tarix07.01.2024
ölçüsü5,01 Kb.
#209951
1   ...   26   27   28   29   30   31   32   33   ...   68
module mealy ( 
input wire clk , 
input wire rst , 
input wire [ 1 : 0 ] x , 
output reg [ 2 : 0 ] y 
) ; 
localparam S0 = 0 , S1 = 1 , S2 = 2 ; 


80 
localparam X0 = 0 , X1 = 1 , X2 = 2 , X3 = 3 ; 
localparam Y0 = 0 , Y1 = 1 , Y2 = 2 , 
Y3 = 3 , Y4 = 4 ; 
reg [ 1 : 0 ] state; 
reg [ 1 : 0 ] state_next ; 
reg [ 2 : 0 ] y_next ; 
// keyingi holatni shakllantirish mantig‘i 
always @* 
case ( state) 
S0 : state_next = ( x == X0) ? S1 : S0 ; 
S1 : state_next = ( x == X1) ? S2 : S1 ; 
S2 : state_next = ( x == X2) ? S1 : 
( x == X3) ? S0 : S2 ; 
default : state_next = state; 
endcase 
// chiqish qiymatini yaratish mantig‘i 
always @* begin 
y_next = y ; 
case ( state) 
S0 : i f ( x == X0) y_next = Y1 ; 
S1 : i f ( x == X1) y_next = Y2 ; 
S2 : begin 
i f ( x == X2) y_next = Y3 ; 
i f ( x == X3) y_next = Y4 ; 
end 
default : y_next = y ; 
endcase 
end 
// chiqish porti registr y 
always @(posedge c l k ) 


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. 


82 
6.5. 6.4-rasmda ko‘rsatilgan Mili avtomatiga ekvivalent bo‘lgan Mur avtomatining 
o‘tish grafi. 
6.5-rasmdan ko‘rinib turibdiki, chiqishni aniqlashda noaniqliklarga yo‘l 
qo‘ymaslik uchun 
𝑆
0 va 
𝑆
1 boshlang‘ich holatlari mos ravishda ikkiga bo‘lingan: 
𝑆
0.1, 
𝑆
0.2 va 
𝑆
1.1, 
𝑆
1.2. Endi mashinaning chiqish qiymati 6.3-jadvalda 
ko‘rsatilganidek, uning holati bilan to‘liq aniqlanadi. 
6.3-jadval - Mur avtomatining o‘tish jadvali, 2.4-rasmda ko‘rsatilgan Mili 
avtomatiga ekvivalent. 
S/rst,X 
rst 
𝑥

𝑥

𝑥

𝑥

𝑆
0.1 
𝑆
0.1/
𝑦

𝑆
1.1/
𝑦

𝑆
0.1/
𝑦

𝑆
0.1/
𝑦

𝑆
0.1/
𝑦

𝑆
0.2 
𝑆
0.1/
𝑦

𝑆
1.1/
𝑦

𝑆
0.2/
𝑦

𝑆
0.2/
𝑦

𝑆
0.2/
𝑦

𝑆
1.1 
𝑆
0.1/
𝑦

𝑆
1.1/
𝑦

𝑆
2/
𝑦

𝑆
1.1/
𝑦

𝑆
1.1/
𝑦

𝑆
1.2 
𝑆
0.1/
𝑦

𝑆
1.2/
𝑦

𝑆
2/
𝑦

𝑆
1.2/
𝑦

𝑆
1.2/
𝑦

𝑆

𝑆
0.1/
𝑦

𝑆
2/
𝑦

𝑆
2/
𝑦

𝑆
1.2/
𝑦

𝑆
0.2/
𝑦

Raqamni siljitish bilan amalga oshiriladi. 
6.6- rasm. Ustunli ko‘paytirishga misol. 


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 

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. 


84 
6.7.Rasm "Ustun" ko‘paytirish algoritmining sxemasi.
6.8.Rasm - Ko‘paytirish qurilma birligining interfeysi.
Hisoblash jarayonini boshqarish moslamasini Mili cheklangan holat 
avtomati sifatida loyihalash qulay, uning o‘tish grafigi 6.9-rasmda ko‘rsatilgan. 
Tugash 
Boshlash 
Ko‘paytirish 
bloki 


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 , 


86 
output busy_o , 
output reg [ 1 5 : 0 ] y_bo 
) ; 
localparam IDLE = 1 ’ b0 ; 
localparam WORK = 1 ’ b1 ; 
reg [ 2 : 0 ] c t r ; 
wire [ 2 : 0 ] end_step ; 
wire [ 7 : 0 ] part_sum; 
wire [ 1 5 : 0 ] shifted_part_sum ; 
reg [ 7 : 0 ] a , b ; 
reg [ 1 5 : 0 ] part_res ; 
reg state; 
assign part_sum = a & {8{b [ c t r ] } } ; 
assign shifted_part_sum = part_sum << c t r ; 
assign end_step = ( c t r == 3 ’ h7 ) ; 
assign busy_o = state; 
always @(posedge c lk_i ) 
i f ( rst_i ) begin 
c t r <= 0 ; 

Yüklə 5,01 Kb.

Dostları ilə paylaş:
1   ...   26   27   28   29   30   31   32   33   ...   68




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin