O`rnatilgan tizimlarni dasturi ta`minotini ishlab chiqish
Download 36.96 Kb.
|
1-Verilog
“O`rnatilgan tizimlarni dasturi ta`minotini ishlab chiqish” fani LABORATORIYA ISHI VerilogHDL tili imkoniyatlarini o`rganish Verilog – mantiqiy sxemalarni tavsiflovchi til hisoblanadi. Verilog tilida ishlatiladigan signal manbalarining asosiy turlari bilan tanishishdan boshlaymiz. Signal - sxemaning mantiqiy elementlari orasida o`tkazgichlar (wires) bo`ylab uzatilayotgan elektr impulslari hisoblanadi. O`tkazgichlar axborotni uzatish uchun qo`llanilib, axborotning ustida hech qanday hisoblashlarni amalga oshirmaydi. Signallar raqamli sxemada ikkilik ma`lumotlarni uzatish uchun muhim hisoblanadi. Verilog tilida signal manbasining asosiy turlaridan biri – bu o`tkazgich (wire) hisoblanadi. Shunday qilib, agar sizda arifmetik yoki mantiqiy ifoda bo`lsa, ifodaning natijasini muayyan o`tkazgich orqali ifodalashingiz va uni boshqa ifodalar uchun ham ishlatishingiz mumkin. Buni o`zgaruvchilarga o`xshatish mumkin, ammo sxemadagi o`tkazgichlarni to`g`ridan-to`g`ri bog`lash mumkin emas. O`tkazgichning (wire) qiymati – unga bog`langan funksiya hisoblanadi. Verilog tilida yozilgan dasturda bir bitli o`tkazgichning tavsifi: wire a; Siz unga boshqa signalni tayinlashingiz mumkin, masalan, b signalni: wire b; assign a = b; Yoki bitta ifoda orqali ham signalni aniqlab, ham uni tayinlash mumkin: wire a = b; Bir necha bitlarni uzatuvchi o`tkazgichlar : wire [3:0] c; //4 ta o`tkazgich Bir necha bit axborotni uzatuvchi o`tkazgichlar “shina”, ba`zida “vektor” deb nomlanadi. Ular ham quyidagicha tayinlanadi: wire [3:0] d; assign c = d; //“ulanish” bir shinaning boshqasiga ulanishi Shinadagi o`tkazgichlar soni kvadrat qavslar ichiga olingan ikki nuqta bilan ajratilgan ixtiyoriy 2 ta butun son bilan aniqlanadi: wire [11:4] e; //sakkiz bitli shina wire [0:255] f; //256 - bitli shina Shinada ba`zi kerakli bitlarni tanlab olib, boshqa o`tkazgichga tayinlashi mumkin: wire g; assign g = f[2]; // “g” signalga “f” shinaning ikkinchi bitini tayinlash Bundan tashqari, shinadan tanlanayotgan bitni o`zgaruvchi sifatida tavsiflash mumkin: wire [7:0] h; wire i = f[h]; // “f” shinasidan h nomerli bitga I signalni tayinlaymiz. Signalli shinadan bitlar to`plamini tanlab, shu miqdordagi bitga ega boshqa shinaga tayinlash: wire [3:0] j = e[7:4]; Signalli shinanalar uchun massivlarni aniqlash mumkin: wire [7:0] k [0:19]; // 8 bitli shinadan iborat 20 tali massiv
Registrlar ham o`tkazgich kabi tavsiflanadi: reg [3:0] m; reg [0:100] n; Registrlar ham o`tkazgich kabi – ifodaning o`ng tomonida operandlar singari: wire [1:0] p = m[2:1]; Odatda “xotira” deb nomlanuvchi registrlar massivi quyidagicha aniqlanadi: reg [7:0] q [0:15]; //har biri 8 bitdan iborat 16 ta so`zdan iborat xotira Signal manbasining yana bir turi - integer. U registrga(reg) o`xshaydi, lekin 32 bitli belgili ma`lumot turi hisoblanadi. Masalan, e`lon qilamiz: integer loop_count; Verilog mantiqni bloklarga guruhlash imkonini beradi. Har bir blok “modul” (module) deb nomlanadi. Modullar wire signallari kabi kirish va chiqishga ega. Modulni tavsiflashda avval uning portlari (kirish va chiqish) e`lon qilinadi: module my_module_name (port_a, port_b, w, y, z); So`ng signallarning yo`nalishi tavsiflanadi: input port_a; output [6:0] port_b; input [0:4] w; inout y; // ikkitomonlama signal, odatda mikrosxemaning tashqi kontaktlari uchun ishlatiladi. Modulning chiqishi wire o`tkazgichidek emas, balki reg registr kabi e`lon qilinishi mumkin: output [3:0] z; reg [3:0] z;
module my_module ( input wire port_a, output wire [6:0]port_b, input wire [0:4]w, inout wire y, output reg [3:0]z );
wire r = w[1];
assign port_b = h[6:0]; Har bir modulning tavsiflashini tugatganimizda endmodule so`zini yozamiz. module my_module_name (input wire a, input wire b, output wire c); assign c = a & b; endmodule Signal manbalarining oxirgi turi – doimiy signallar yoki sonlar: wire [12:0] s = 12; /* 32-bitli o`nlik sonni, 13 bitgacha “qirqish” */ wire [12:0] z = 13’d12; //13-bitli o`nlik son wire [3:0] t = 4'b0101; //4-bitli ikkilik son wire [7:0] q = 8'hA5; // 8-bitli o`n oltilik son A5 wire [63:0] u = 64'hdeadbeefcafebabe; /*64-bitli o`n oltilik son */ Agar sonning qiymati aniqlanmasa, u 32-xonali deb qabul qilinadi. Sonlar arifmetik va mantiqiy ifodalarda ishlailishi mumkin. Masalan, “aa” vektorga 1 ni qo`shish mumkin: wire [3:0] aa; wire [3:0] bb; assign bb = aa + 1; Verilog tilida qo`shish ifodasi pirovardida chip ichidagi summator qurilmasiga aylanishi tushunarli albatta. Download 36.96 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling