Máy tính nhịn phân - báo cáo Thiết kế máy tính số nhị phân 4 bit có dấu bằng ngôn ngữ verilog ( file .doc+ full code)

27 288 1
Máy tính nhịn phân - báo cáo Thiết kế máy tính số nhị phân 4 bit có dấu bằng ngôn ngữ verilog ( file .doc+ full code)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

module alu_LIFObuffer( input rst, EN, xchg, clr, neg, dataIn, alu, output EMPTY, FULL, Unknown, dp1, dp2 );input 3:0 dataIn;input 2:0 alu;input clr, EN, rst, xchg, neg ; output reg3:0 dp1,dp2;output reg EMPTY,FULL,Unknown;reg ALU; reg 7:0o_result=0;reg 3:0 stack_mem0:3;reg 2:0 SP;reg 3:0A,B,temp,temp2;integer i;parameter add=3b001;parameter sub=3b010;parameter mul=3b011;parameter div=3b100; controller stack always (EN or rst or xchg or neg or clr)begin Unknown=0; if(alu==add || alu == sub || alu==mul || alu==div)ALU=1; else ALU=0; delete all data on stack if (rst==1) begin SP = 3d4;FULL=0; EMPTY = SP2; for (i=0;i=temp2) o_result3:0=temptemp2;else o_result3:0=temp2temp;if((temp>=temp2 A3==1)|| (temp= temp2, out = temp - tem2  Temp=temp2 && A[3]==1)|| (temp=B, out = A – B bit dấu theo A  A= temp2:  thuong = temp / temp2  du = temp – temp2 * thuong  A[3]==1: o thuong=thuong+1 o du = temp2 – du  A B khác dấu, thuong = bù (thuong) Thiết kế vào tổng hợp IC số b Stack Trong này, nhóm em lựa chọn loại stack last in first out (LIFO) Hình hạt động LIFO Nhóm em sử dụng stack ngăn, ngăn độ rộng bit Khi stack trống, sáng tín hiệu EMPTY báo hiệu Khi stack đầy, sáng tín hiệu FULL báo hiệu Sử dụng biến trỏ đặt tên SP biến dùng để trỏ đến vị trí ngăn xếp làm việc Vì ngăn xếp nên SP cần bit trạng thái reset, SP =4 tương ứng với EMPTY = ( SP # EMPTY = 0) Sau lần load data từ dataIn SP giảm đến SP = FULL = (SP # FULL =0 ) Khi tín hiệu clr = 1, ngăn xếp bị xóa, giá trị ngăn bên đẩy lên đồng thời tăng giá trị SP lên đơn vị Khi tính tốn, đảo vị trí ngăn xếp hay thay ngăn mã bù chúng trỏ giữ nguyên giá trị Ví dụ để lưu giá trị 1000, 1100, 1110 1111 thực sau: 10 Báo cáo nhóm 20 III Mơ model sim Hình mơ model sim (1) Giải thích:hình Ở em giải thích từ trái qua phải theo vị trí mà tín hiệu EN = (hình vị trí) - Vị trí 1: dataIn = 1111 thời điểm tín hiệu rst=1 nên ko liệu đưa vào Stack trạng thái EMPTY - Vị trí 2: rst =0 nên dataIn đưa vào stack Khi stack khơng trống (EMPTY = 0) dp1 hiển thị giá trị vừa lưu, dp2 chưa giá trị (trong stack giá trị 0001) - Vị trí 3: tương tự vị trí số dp2 giá trị dp1 trước (trong stack 0011 0001) - Vị trí 4: ALU=1 (alu=010 -phép trừ) {dp1,dp2} = dp1 - dp2 (trong stack 0000 0010) 13 Thiết kế vào tổng hợp IC số - Vị trí 5: ALU = stack hoạt động vị trí (stack 0001, 0000, 0010) - Vị trí 6: hạt động giống vị trí stack báo đầy (FULL=1) (stack 0000, 0001, 0000, 0010) - Vị trí 7: stack khơng hoạt động đầy nên gí trị Giải thích hình Hình giải thích từ trái qua phải theo vị trí tín hiệu rst, EN, xchg, neg, clr (5 vị trí) - Vị trí 1: tương tự với trí trí hình - Vị trí 2: xchg = 1, dp1 dp2 trao đổi giá trị (stack 0001, 0000, 0000, 0010) - Vị trí 3: neg =1, dp1 thay mã nhị phân bù gí trị dp1 trước (stack 1111,0000,0000,0010) - Vi trí 4: giống với trị trí số hình (stack 0000,1111,0000,0010) - Vị trí 5: clr =1,top stack bị xóa, stack khơng bị đầy (FULL =0) (stack 1111,0000,0010) dp1 = 1111, dp2 = 0000 Giải thích hình 10 Hình giả thích theo vị trí mà tín hiệu clr =1 (3 vị trí) - Vị trí 1: top stack bị xóa (tức giá trị 1111 bị xóa) stack 0000 0010 Tương ứng với dp1 = 0000, dp2 = 0010 - Vị trí 2: top stack bị xóa (tức giá trị 0000 bị xóa) stack 0010 Tương ứng với dp1 = 0010, dp2 ko giá trị - Vị trí 3: top stack bị xóa (tức giá trị 0010 bị xóa) stack trống Khi dp1 dp2 khơng giá trị Tín hiệu EMPTY = 14 Báo cáo nhóm 20 Hình mơ model sim (2) Hình 10 mơ model sim ( 3) 15 Thiết kế vào tổng hợp IC số IV Cấu hình chân cho kit DE2 Bảng tham khảo số Pin kit DE2 (tham khảo Altera DE2 Board Pin Table ) Bảng số PIN cần sử dụng KIT 16 Báo cáo nhóm 20 Bảng cấu hình chân To EN alu[2] alu[1] alu[0] clr dataIn[3] dataIn[2] dataIn[1] dataIn[0] neg rst xchg EMPTY FULL Unknown dp1[3] dp1[2] dp1[1] dp1[0] dp2[3] dp2[2] dp2[1] dp2[0] Direction Input Input Input Input Input Input Input Input Input Input Input Input Output Output Output Output Output Output Output Output Output Output Output Location I/O Bank PIN_P23 PIN_V1 PIN_U4 PIN_U3 PIN_W26 PIN_AE14 PIN_P25 PIN_N26 PIN_N25 PIN_G26 PIN_V2 PIN_N23 PIN_AE23 PIN_AF23 PIN_Y12 PIN_Y18 PIN_AA20 PIN_U17 PIN_U18 PIN_V18 PIN_W19 PIN_AF22 PIN_AE22 1 5 5 7 7 7 7 7 Vref Group B6_N0 B1_N0 B1_N0 B1_N0 B6_N1 B7_N1 B6_N0 B5_N1 B5_N1 B5_N0 B1_N0 B5_N1 B7_N0 B7_N0 B8_N0 B7_N0 B7_N0 B7_N0 B7_N0 B7_N0 B7_N0 B7_N0 B7_N0 I/O Reserved Standard 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL 3.3-V LVTTL name Button Switch 16 Switch 15 Switch 14 Button Switch Switch Switch Switch Button Switch 17 Button Led red Led red Led green Led green Led green Led green Led green Led green Led green Led green Led green Bảng cấu hình chân cho kit DE2 V Demo (thực kit DE2) 17 Thiết kế vào tổng hợp IC số VI Phụ lục Hình Hình đồ tổng quát Hình giản đồ ASM Hình Khối controller Hình hạt động LIFO 10 Hình mơ tả hoạt động stack lúc ghi 11 Hình Hoạt động xóa stack 11 Hình cách đọc kết 12 Hình mơ model sim (1) 13 Hình mơ model sim (2) 15 Hình 10 mô model sim ( 3) 15 Bảng Bảng mã hóa tín hiệu alu Bảng số PIN cần sử dụng KIT 16 Bảng cấu hình chân cho kit DE2 17 Code ///////////////////////////////////////////////// clr, // author: neg, ////////////////////////////////////////////// dataIn, module alu_LIFObuffer( alu, //input //output rst, EMPTY, EN, FULL, xchg, Unknown, 18 Báo cáo nhóm 20 reg [3:0] stack_mem[0:3]; dp1, reg [2:0] SP; dp2 ); reg [3:0]A,B,temp,temp2; input [3:0] dataIn; integer i; input [2:0] alu; parameter add=3'b001; input parameter sub=3'b010; clr, EN, parameter mul=3'b011; rst, parameter div=3'b100; xchg, ////////////////////////////////////////////// /* controller stack */ neg ; output reg[3:0] dp1,dp2; output reg EMPTY,FULL,Unknown; reg ALU; always @ (EN or rst or xchg or neg or clr) begin Unknown=0; if(alu==add || alu == sub || alu==div)ALU=1; alu==mul || reg [ 7:0]o_result=0; else ALU=0; 19 Thiết kế vào tổng hợp IC số //delete all data on stack SP = SP+1; if (rst==1) begin EMPTY = SP[2]; SP = 3'd4; FULL = SP? 0:1; FULL=0; end EMPTY = SP[2]; //set data for (i=0;i=temp2)begin end temp=temp-temp2; else ; o_result=o_result+1'b1; if (o_result ==0)o_result[3]=0; end else o_result[3]=A[3]^B[3]; end o_result[7:4]=temp[3:0]; if(A[3]==1 && temp !=0)begin end end o_result=o_result +1; end /******************************** temp = temp2-temp; *****/ end endcase 24 Báo cáo nhóm 20 /******************************** *****************/ stack_mem[SP]=dataIn; end else; stack_mem[SP+1'b1]=o_result[3:0]; end stack_mem[SP]=o_result[7:4]; end end else if ( xchg ==1)begin temp = stack_mem[SP]; else; stack_mem[SP] = stack_mem[SP + 1’b1]; stack_mem[SP] = temp; end end else if ( ALU==0) begin else if ( neg ==1)begin FULL = SP? 0:1; EMPTY = SP[2]; stack_mem[SP] 4'b1111) +1'b1; = (stack_mem[SP]^ end if (FULL == 1'b0) begin else; SP = SP-1'b1; //display data FULL = SP? 0:1; dp1 = stack_mem[SP]; EMPTY = SP[2]; dp2 = stack_mem[SP+1'b1]; 25 Thiết kế vào tổng hợp IC số neg (neg), end dataIn(dataIn), EN(EN), rst(rst), endmodule EMPTY(EMPTY), FULL(FULL), ////////////////////////////////////////// dp1(dp1), `timescale 1ns/1ns dp2(dp2), module tb_alu_LIFObuffer(); clr(clr), alu(alu) reg [3:0] dataIn; ); reg EN,rst; initial begin reg clr,xchg,neg; //reset reg [2:0] alu; #0 rst =1; clr=0; xchg=0; neg=0; EN=0; dataIn=4'b1111; alu = 3'b000; wire EMPTY, FULL,Unknown; #10 EN=1; #10 EN=0; wire [3:0]dp1,dp2; #10 rst=0; alu_LIFObuffer dut( //push dataIn Unknown(Unknown), #50 dataIn=4'b0001;#10 EN=1; # 10 EN=0; xchg(xchg), #50 dataIn=4'b0011;#10 EN=1; # 10 EN=0; 26 Báo cáo nhóm 20 //replace two top stack with sub //clear top stack #50 alu=3'b010; #10 EN=1;# 10 EN=0; #100 clr=1; #10 clr=0; #50 alu =3'b000; #100 clr=1; #10 clr=0; //push dataIn #100 clr=1; #10 clr=0; #50 dataIn=4'b0001;#10 EN=1; # 10 EN=0; #100 clr=1; #10 clr=0; #50 dataIn=4'b0000;#10 EN=1; # 10 EN=0; // push (-8) * (-8) #50 dataIn=4'b0001;#10 EN=1; # 10 EN=0; #100 dataIn=4'b1000;#10 EN=1; # 10 EN=0; #50 dataIn=4'b0111;#10 EN=1; # 10 EN=0; #100 EN=1; # 10 EN=0; #50 xchg=1; #10 xchg =0; #50 alu=3'b011; #10 EN=1;# 10 EN=0; #100 neg=1; #10 neg =0; end //replace two top stack with sub endmodule #50 alu=3'b010; #10 EN=1;# 10 EN=0; # 50 alu =0; Tài liệu tham khảo Ciletti M.D - Advanced Digital Design With the Ve Jr.Charles H.Roth - Digital Systems Design Usin Altera DE2 Board Pin Table https://esrd2014.blogspot.pe/p/ 27

Ngày đăng: 30/06/2018, 08:38

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan