Amaliy ish №6 alt asosidagi vlsi yordamida Verilog hdl tilini qo’lab matematik hisob-kitoblarning apparat tezlatkichlarini ishlab chiqish. Ishning maqsadi


Download 1 Mb.
bet2/4
Sana17.01.2023
Hajmi1 Mb.
#1096712
1   2   3   4
Bog'liq
6-Amaliy ish javoblari

module moore (
input wire clk ,
input wire rst ,
input wire [ 1 : 0 ] x ,
output wire [ 1 : 0 ] y
) ;
localparam S0 = 0 , S1 = 1 , S2 = 2 ;
localparam X0 = 0 , X1 = 1 , X2 = 2 , X3 = 3 ;
reg [ 1 : 0 ] state ;
reg [ 1 : 0 ] state_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
assign y = state ;
// holat reestri
always @(posedge clk )
i f ( rst ) begin
state <= S0 ;
end else begin
state <= state_next ;
end
endmodule
Mili avtomatining umumlashtirilgan blok sxemasi 6.3-rasmda ko'rsatilgan.

6.3.Rasm Mili avtomatining umumlashtirilgan sxemasi
Mili avtomatida mashinaning chiqish qiymati nafaqat joriy holatga, balki kirish qiymatlariga ham bog'liq. Mili avtomatining o'tish grafigia misol 6.4-rasmda ko'rsatilgan.

6.4-rasm. Mili avtomatining o'tish grafiga misol.
Mili avtomatining har bir o'tishi, avtomat chiqishida hosil qiladigan qiymat bilan izohlanadi. Masalan, avtomatning kirishiga 𝑥0 qiymati qo'llanilsa, 𝑆0 holatidan 𝑆1 ga o'tish sodir bo'ladi. Bunday holda, chiqishda 𝑦1 qiymati hosil bo'ladi. Agar kirishda 𝑥2 bo'lsa, avtomat 𝑆2 holatidan 𝑆1 holatiga o'tadi hamda chiqishda 𝑦3 qiymatini hosil qiladi. Shunday qilib, bir xil holatda 𝑆1, avtomat ikki xil chiqish qiymatiga ega bo'lishi mumkin, ya'ni 𝑦1 yoki 𝑦3.
Mili avtomatining o'tish jadvaliga misol 6.2-jadvalda keltirilgan. y𝑝𝑟𝑒𝑣 - mos ravishda oldingi bosqichdagi avtomatning chiqish qiymati. Shunday qilib, Mili avtomatida chiqish qiymatini faqat mashinaning joriy holatidan bilib bo'lmaydi.
Mili avtomatining Verilog HDL ilovasi 6.2 listingda keltirilgan.
Listingda 6.3-rasmda ko'rsatilgan strukturaviy qismlar aniq ta'kidlangan. Amalda, bir xil protsessual bloklar doirasida turli strukturaviy qismlarni birlashtirish mumkin.
6.2-jadval - Mili mashinasining o'tish jadvaliga misol.

Listing 6.2. Mili avtomatining Verilog HDL dagi tavsifi.
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 ;
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 )
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.

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.

Raqamni siljitish bilan amalga oshiriladi.

6.6- rasm. Ustunli ko'paytirishga misol.
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.



natija

ROST

ROST

YOLG‘ON

YOLG‘ON

6.7-rasm "Ustun" ko'paytirish algoritmining sxemasi.

Ko‘paytirish
bloki

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.

(kutish)

(ish)

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 ,
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 ;

Download 1 Mb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling