Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module FourBitReg(a0, a1, a2, a3, clk, nreset, q0, q1, q2, q3);//register الخاصة بل module ال
- input a0, a1, a2,a3;//register الانبت الخاصة بل
- input nreset, clk;
- output q0, q1, q2, q3; //register الاوتبت الخاصة بل
- Dflipflop Q0(a0, clk, nreset, q0);//من الانبت bit كل واحده تكون مسؤووله عن تخزين Dflipflops نقوم بتكوين 4
- Dflipflop Q1(a1, clk, nreset, q1);
- Dflipflop Q2(a2, clk, nreset, q2);
- Dflipflop Q3(a3, clk, nreset, q3);
- endmodule
- module FourBitReg_tb; //test module
- reg a0, a1, a2, a3;//متغيرات لتخزين قيم الانبت و الاوتبت
- reg clk, nreset;
- wire q0, q1, q2, q3;
- reg[3:0] counter; //test data يقوم بتخزين اين وصلنا في ال counter
- reg[3:0] in;//متغير يحمل قيمة الانبت
- FourBitReg Register(a0, a1, a2, a3,clk, nreset, q0, q1, q2, q3);//الوحدة تحت الاختبار
- initial begin
- a0 = 1'b0; a1 = 1'b0; a2=1'b0; a3 = 1'b0;//قيم ابتدائية للمتغيرات
- clk = 1'b0; nreset = 1'b1;
- $monitor("a0a1a2a3 = %b%b%b%b, clk=%b, nreset=%b, q0q1q2q3=%b%b%b%b",
- a0, a1, a2, a3, clk, nreset, q0, q1, q2, q3);//نراقب قيم المتغيرات و نطبع رسالة عند تغيرها
- end
- initial begin
- for(counter =0; counter < 4'b1000; counter = counter + 1'b1) begin
- in = $random%16; //نختار رقم عشوائي بين 0000-1111
- a0 = in[0];//in من bit تساوي اول a0
- a1 = in[1];//in من bit تساوي ثاني a1
- a2 = in[2];//in من bit تساوي ثالث a2
- a3 = in[3];//in من bit تساوي رابع a3
- #10;
- if(counter == 3'b011)begin
- nreset = 0;
- end
- end
- $finish; //test ننهي الاختبار بعد انتهاء ال
- end
- always begin //clk الكود لتكوين
- #10
- clk = ~clk;
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement