移位寄存器實驗報告_第1頁
移位寄存器實驗報告_第2頁
移位寄存器實驗報告_第3頁
移位寄存器實驗報告_第4頁
移位寄存器實驗報告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第頁移位寄存器實驗報告姓名:陳素學(xué)號:3120100621專業(yè):軟件工程課程名稱:邏輯與計算機設(shè)計基礎(chǔ)實驗同組學(xué)生姓名:張聞實驗時間:yyyy-mm-dd實驗地點:紫金港東4-509指導(dǎo)老師:一、實驗?zāi)康暮鸵笳莆找莆患拇嫫鞯墓ぷ髟砑霸O(shè)計方法掌握串、并數(shù)據(jù)轉(zhuǎn)換的概念與方法了解序列信號在CPU控制器設(shè)計中的應(yīng)用二、實驗內(nèi)容和原理2.1實驗原理帶并行置入的移位寄存器移位寄存器:每來一個時鐘脈沖,寄存器中的數(shù)據(jù)按順序向左或向右移動一位必須采用主從觸發(fā)器或邊沿觸發(fā)器不能采用電平觸發(fā)器數(shù)據(jù)移動方式:左移、右移數(shù)據(jù)輸入輸出方式串行輸入,串行輸出串行輸入,并行輸出并行輸入,串行輸出串行輸入的移位寄存器使用D觸發(fā)器,可構(gòu)成串行輸入的移位寄存器2.2標題<正文>帶并行輸入的右移移位寄存器數(shù)據(jù)輸入移位寄存器的方式:串行輸入、并行輸入帶并行輸入的8位右移移位寄存器moduleshift_reg(clk,S,s_in,p_in,Q);inputwireclk,S,s_in;inputwire[7:0]p_in;outputwire[7:0]Q;wire[7:0]D;wirenS;FDFDQ0(.C(clk),.D(D[0]),.Q(Q[0])),FDQ1(.C(clk),.D(D[1]),.Q(Q[1])),FDQ2(.C(clk),.D(D[2]),.Q(Q[2])),FDQ3(.C(clk),.D(D[3]),.Q(Q[3])),FDQ4(.C(clk),.D(D[4]),.Q(Q[4])),FDQ5(.C(clk),.D(D[5]),.Q(Q[5])),FDQ6(.C(clk),.D(D[6]),.Q(Q[6])),FDQ7(.C(clk),.D(D[7]),.Q(Q[7]));OR2D0_L(.I0(L_0),.I1(R_0),.O(D[0])),D1_L(.I0(L_1),.I1(R_1),.O(D[1])),D2_L(.I0(L_2),.I1(R_2),.O(D[2])),D3_L(.I0(L_3),.I1(R_3),.O(D[3])),D4_L(.I0(L_4),.I1(R_4),.O(D[4])),D5_L(.I0(L_5),.I1(R_5),.O(D[5])),D6_L(.I0(L_6),.I1(R_6),.O(D[6])),D7_L(.I0(L_7),.I1(R_7),.O(D[7]));并行-串行轉(zhuǎn)換器沒有啟動命令時并行-串行轉(zhuǎn)換器2.1實驗內(nèi)容用VerilogHDL語言,采用結(jié)構(gòu)化描述方法設(shè)計一個8位帶并行輸入的右移移位寄存器。編寫該移位寄存器的代碼模塊shift_reg針對該模塊,編寫波形仿真輸入代碼進行波形仿真,并分析仿真結(jié)果是否正確設(shè)計16位帶并行輸入的右移移位寄存器。2、增加到計算器模塊中。3、修改相關(guān)代碼。4、修改ucf文件。5、下載并驗證。三、主要儀器設(shè)備必須采用編號樣式,設(shè)備的數(shù)量和單位應(yīng)對齊。示范如下:xx開發(fā)板 1套裝有ISE的PC機 1臺四、操作方法與實驗步驟修改TOP程序,添加移位寄存器Moduletop(inputwireclk,inputwire[7:0]btn_in,inputwire[3:0]switch,outputwire[11:0]anode,outputwire[15:0]segment)reg[15:0]op1,op2;reg[15:0]display_num;wire[11:0]btn_out;wire[15:0]result,cnt;wire[31:0]display_num32b;wireclk_1s;wire[15:0]Q1,data_out;initialbegin op1=16'b0011_0011_0011_0011;//3333 op2=16'b0010_0010_0010_0010;//2222endpbdebouncep0(clk,btn_in[0],btn_out[0]);displaym0(clk,display_num,anode[3:0],segment[7:0]);//displaymoduledisplay32bitsm1(clk,display_num32b,anode[11:4],segment[15:8]);calculate_resultm2(switch,op1,op2,result);//calculateresultcounter_1sm3(clk,clk_1s);couter_16reversiblem4(clk_1s&btn_out[8],switch[4],cnt,Rc);shift_regm6(btn_out[9],switch[8],switch[9],op1,Q1);regfilem7(btn_out[10],btn_out[11],switch[13:10],op2,data_out);always@(posedgebtn_out[7])op2[15:12]<=op2[15:12]+4'd1;assigndisplay_num32b={op2,op1};//assigndisplay_num=result;always@*begincase(switch[7:6])2'b00:display_num=result;//result2'b01:display_num=cnt;2'b10:display_num=Q1;2'b11:beginif(btn_out[10]==1)display_num=op2;elsedisplay_num=data_out;endendcaseendendmoduleRegfile--16程序模塊1moduleregfile(wclk,rclk,address,data_in,data_out);inputwirewclk,rclk;inputwire[3:0]address;inputwire[15:0]data_in;outputwire[15:0]data_out;wire[15:0]Yi;wire[15:0]clk;assignclk[15:0]={16{wclk}}&Yi;wire[15:0]regQ0,regQ1,regQ2,regQ3,regQ4,regQ5,regQ6,regQ7,regQ8,regQ9,regQ10,regQ11,regQ12,regQ13,regQ14,regQ15;decode_4_16M0(address[3:0],wclk,Yi);//4-16譯碼器mux_16_1M1(rclk,address[3:0],regQ0,regQ1,regQ2,regQ3,regQ4,regQ5,regQ6,regQ7,regQ8,regQ9,regQ10,regQ11,regQ12,regQ13,regQ14,regQ15,data_out);//16-1:多選一register16R0(clk[0],data_in,regQ0),//clk=wclk&YiR1(clk[1],data_in,regQ1),R2(clk[2],data_in,regQ2),R3(clk[3],data_in,regQ3),R4(clk[4],data_in,regQ4),R5(clk[5],data_in,regQ5),R6(clk[6],data_in,regQ6),R7(clk[7],data_in,regQ7),R8(clk[8],data_in,regQ8),R9(clk[9],data_in,regQ9),R10(clk[10],data_in,regQ10),R11(clk[11],data_in,regQ11),R12(clk[12],data_in,regQ12),R13(clk[13],data_in,regQ13),R14(clk[14],data_in,regQ14),R15(clk[15],data_in,regQ15);endmodule4位4—16變量譯碼器程序模塊moduledecode_4_16(address,wclk,Yi);inputwire[3:0]address;inputwirewclk;outputreg[15:0]Yi;always@*beginif(wclk==1'b1)case(address[3:0])4'b0000:Yi=16'h0001;4'b0001:Yi=16'h0002;4'b0010:Yi=16'h0004;4'b0011:Yi=16'h0008;4'b0100:Yi=16'h0010;4'b0101:Yi=16'h0020;4'b0110:Yi=16'h0040;4'b0111:Yi=16'h0080;4'b1000:Yi=16'h0100;4'b1001:Yi=16'h0200;4'b1010:Yi=16'h0400;4'b1011:Yi=16'h0800;4'b1100:Yi=16'h1000;4'b1101:Yi=16'h2000;4'b1110:Yi=16'h4000;4'b1111:Yi=16'h8000;endcaseelseYi=16'h0000;endendmodule十六選一的數(shù)據(jù)選擇器程序模塊modulemux_16_1(rclk,address,regQ0,regQ1,regQ2,regQ3,regQ4,regQ5,regQ6,regQ7,regQ8,regQ9,regQ10,regQ11,regQ12,regQ13,regQ14,regQ15,data_out);inputwirerclk;inputwire[3:0]address;inputwire[15:0]regQ0,regQ1,regQ2,regQ3,regQ4,regQ5,regQ6,regQ7,regQ8,regQ9,regQ10,regQ11,regQ12,regQ13,regQ14,regQ15;outputreg[15:0]data_out;always@(posedgerclk)begin//if(rclk==1'b1)case(address[3:0])4'b0000:data_out=regQ0;4'b0001:data_out=regQ1;4'b0010:data_out=regQ2;4'b0011:data_out=regQ3;4'b0100:data_out=regQ4;4'b0101:data_out=regQ5;4'b0110:data_out=regQ6;4'b0111:data_out=regQ7;4'b1000:data_out=regQ8;4'b1001:data_out=regQ9;4'b1010:data_out=regQ10;4'b1011:data_out=regQ11;4'b1100:data_out=regQ12;4'b1101:data_out=regQ13;4'b1110:data_out=regQ14;4'b1111:data_out=regQ15;endcaseendendmodule16位D觸發(fā)器程序模塊moduleregister16(cl,Di,Dot);//無R,D觸發(fā)器inputwirecl;inputwire[15:0]Di;outputreg[15:0]Dot;always@(posedgecl)Dot<=Di;endmodule16位全加器moduleadder_16bits(A,B,Ctr,S,Co); parametersize=16;input[15:1]A;input[15:1]B;inputCtr;output[11:1]S;outputCo; wire[size-1:1]Ctemp; wire[size:1]Bo; assignBo={16{Ctr}}^B;adder_1bit A1(.a(A[1]),.b(Bo[1]),.ci(Ctr),.s(S[1]),.co(Ctemp[1])), A2(A[2],Bo[2],Ctemp[1],S[2],Ctemp[2]), A3(A[3],Bo[3],Ctemp[2],S[3],Ctemp[3]), A4(A[4],Bo[4],Ctemp[3],S[4],Ctemp[4]), A5(A[5],Bo[5],Ctemp[4],S[5],Ctemp[5]), A6(A[6],Bo[6],Ctemp[5],S[6],Ctemp[6]), A7(A[7],Bo[7],Ctemp[6],S[7],Ctemp[7]), A8(A[8],Bo[8],Ctemp[7],S[8],Ctemp[8]), A9(A[9],Bo[9],Ctemp[8],S[9],Ctemp[9]), A10(A[10],Bo[10],Ctemp[9],S[10],Ctemp[10]), A11(A[11],Bo[11],Ctemp[10],S[11],Ctemp[11]), A12(A[12],Bo[12],Ctemp[11],S[12],Ctemp[12]), A13(A[13],Bo[13],Ctemp[12],S[13],Ctemp[13]), A14(A[14],Bo[14],Ctemp[13],S[14],Ctemp[14]), A15(A[15],Bo[15],Ctemp[14],S[15],Ctemp[15]), A16(A[16],Bo[16],Ctemp[15],S[16],Co);Endmodule一位全加器moduleadder_1bit(a,b,ci,s,co); //portdeclaration inputwirea,b,ci; outputwires,co; and(c1,a,b),(c2,b,ci),(c3,a,ci); xor(s1,a,b),(s,s1,ci); or(co,c1,c2,c3);endmodule拓展32位顯示的程序moduledisplay32bits(clk,disp_num,digit_anode,segment); inputclk; input[31:0]disp_num; output[7:0]digit_anode; output[7:0]segment; reg[7:0]digit_anode; reg[7:0]segment; reg[12:0]cnt=0; wire[31:0]disp_num; reg[3:0]num;always@(posedgeclk)begin case(cnt[12:10]) 3'b000:begin digit_anode<=8'b11111110; num<=disp_num[3:0]; end 3'b001:begin digit_anode<=8'b11111101; num<=disp_num[7:4]; end 3'b010:begin digit_anode<=8'b11111011; num<=disp_num[11:8]; end 3'b011:begin digit_anode<=8'b11110111; num<=disp_num[15:12]; end 3'b100:begin digit_anode<=8'b11101111; num<=disp_num[19:16]; end 3'b101:begin digit_anode<=8'b11011111; num<=disp_num[23:20]; end 3'b110:begin digit_anode<=8'b10111111; num<=disp_num[27:24]; end 3'b111:begin digit_anode<=8'b01111111; num<=disp_num[31:28]; end endcase case(num) 4'b0000:segment<=8'b11000000; 4'b0001:segment<=8'b11111001; 4'b0010:segment<=8'b10100100; 4'b0011:segment<=8'b10110000; 4'b0100:segment<=8'b10011001; 4'b0101:segment<=8'b10010010; 4'b0110:segment<=8'b10000010; 4'b0111:segment<=8'b11111000; 4'b1000:segment<=8'b10000000; 4'b1001:segment<=8'b10010000; 4'b1010:segment<=8'b10001000; 4'b1011:segment<=8'b10000011; 4'b1100:segment<=8'b11000110; 4'b1101:segment<=8'b10100001; 4'b1110:segment<=8'b10000110; 4'b1111:segment<=8'b10001110; endcase end always@(posedgeclk)begin cnt<=cnt+1; endendmodule引腳代碼NET"clk"LOC="T9";NET"btn_in[0]"loc="E6";NET"btn_in[1]"loc="D5";NET"btn_in[2]"loc="C5";NET"btn_in[3]"loc="D6";NET"btn_in[4]"loc="C6";NET"btn_in[5]"loc="E7";NET"btn_in[6]"loc="C7";NET"btn_in[7]"loc="D7";NET"btn_in[8]"loc="M13";NET"btn_in[9]"loc="M14";NET"btn_in[10]"loc="L13";NET"btn_in[11]"loc="L14";NET"switch[0]"LOC="F12";NET"switch[1]"LOC="G12";NET"switch[2]"LOC="H14";NET"switch[3]"LOC="H13";NET"switch[4]"LOC="J14";NET"switch[5]"LOC="J13";NET"switch[6]"LOC="K14";NET"switch[7]"LOC="K13";NET"switch[8]"LOC="M10";NET"switch[9]"LOC="F3";NET"switch[10]"LOC="H4";NET"switch[11]"LOC="E4";NET"switch[12]"LOC="G5";NET"switch[13]"LOC="F4";NET"anode[0]"LOC="D14";NET"anode[1]"LOC="G14";NET"anode[2]"LOC="F14";NET"anode[3]"LOC="E13";NET"segment[0]"LOC="E14";NET"segment[1]"LOC="G13";NET"segment[2]"LOC="N15";NET"segment[3]"LOC="P15";NET"segment[4]"LOC="R16";NET"segment[5]"LOC="F13";NET"segment[6]"LOC="N16";NET"segment[7]"LOC="P16";NET"anode[4]"LOC="B11";NET"anode[5]"LOC="A10";NET"anode[6]"LOC="B10";NET"anode[7]"LOC="A9";NET"anode[8]"LOC="A8";NET"anode[9]"LOC="B8";NET"anode[10]"LOC="A7";NET"anode[11]"LOC="B7";NET"segment[8]"LOC="C8";NET"segment[9]"LOC="D8";NET"segment[10]"LOC="C9";NET"segment[11]"LOC="D10";NET"segment[12]"LOC="A3";NET"segment[13]"LOC="B4";NET"segment[14]"LOC="A4";NET"segment[15]"LOC="B5";moduleshift_reg(clk,S,s_in,p_in,Q);inputwireclk,S,s_in;inputwire[15:0]p_in;outputwire[15:0]Q;wireD[15:0];wirenS;FDFDQ0(.C(clk),.D(D[0]),.Q(Q[0])),FDQ1(.C(clk),.D(D[1]),.Q(Q[1])),FDQ2(.C(clk),.D(D[2]),.Q(Q[2])),FDQ3(.C(clk),.D(D[3]),.Q(Q[3])),FDQ4(.C(clk),.D(D[4]),.Q(Q[4])),FDQ5(.C(clk),.D(D[5]),.Q(Q[5])),FDQ6(.C(clk),.D(D[6]),.Q(Q[6])),FDQ7(.C(clk),.D(D[7]),.Q(Q[7])),FDQ8(.C(clk),.D(D[8]),.Q(Q[8])),FDQ9(.C(clk),.D(D[9]),.Q(Q[9])),FDQ10(.C(clk),.D(D[10]),.Q(Q[10])),FDQ11(.C(clk),.D(D[11]),.Q(Q[11])),FDQ12(.C(clk),.D(D[12]),.Q(Q[12])),FDQ13(.C(clk),.D(D[13]),.Q(Q[13])),FDQ14(.C(clk),.D(D[14]),.Q(Q[14])),FDQ15(.C(clk),.D(D[15]),.Q(Q[15]));OR2D0_L(.I0(L_0),.I1(R_0),.O(D[0])),D1_L(.I0(L_1),.I1(R_1),.O(D[1])),D2_L(.I0(L_2),.I1(R_2),.O(D[2])),D3_L(.I0(L_3),.I1(R_3),.O(D[3])),D4_L(.I0(L_4),.I1(R_4),.O(D[4])),D5_L(.I0(L_5),.I1(R_5),.O(D[5])),D6_L(.I0(L_6),.I1(R_6),.O(D[6])),D7_L(.I0(L_7),.I1(R_7),.O(D[7])),D8_L(.I0(L_8),.I1(R_8),.O(D[8])),D9_L(.I0(L_9),.I1(R_9),.O(D[9])),D10_L(.I0(L_10),.I1(R_10),.O(D[10])),D11_L(.I0(L_11),.I1(R_11),.O(D[11])),D12_L(.I0(L_12),.I1(R_12),.O(D[12])),D13_L(.I0(L_13),.I1(R_13),.O(D[13])),D14_L(.I0(L_14),.I1(R_14),.O(D[14])),D15_L(.I0(L_15),.I1(R_15),.O(D[15]));AND2L0_L(.I0(Q[1]),.I1(nS),.O(L_0)),L1_L(.I0(Q[2]),.I1(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論