




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《數(shù)字邏輯電路》實驗報告第十四次實驗:七巧板的基本設(shè)計姓名:車開達(dá)學(xué)號:1012200072010級計算機系一班郵箱:798195236@時間:12月22日實驗?zāi)康倪@個實驗是自己的個人的設(shè)計,是從一本關(guān)于iphone的游戲設(shè)計中得到的靈感,自己感覺這個實驗?zāi)軌驅(qū)㈡I盤和顯示器聯(lián)系起來并且實現(xiàn)不算太難,主要是聯(lián)系獲得鍵盤的數(shù)據(jù),處理數(shù)據(jù)并能夠在顯示器上顯示相應(yīng)的圖案,是個個人感覺比較新穎的想法,所以沒有太用心實現(xiàn)簡易處理器,大部分時間都用來實現(xiàn)這個設(shè)計了。二、實驗原理(背景知識)從第九次實驗中的鍵盤實驗可以學(xué)到如何接受外界鍵盤的輸入,在后面的VGA實驗中可以基本了解如何顯示基本圖案,但是如何實現(xiàn)移動和旋轉(zhuǎn),所以為了方便實現(xiàn)以及統(tǒng)一管理,自己使用了有一個點來形成一個圖案,并且對移動和旋轉(zhuǎn)都是以這個點為基準(zhǔn)的。然后主要是對每個圖案的圖形計算,其中對圖像的旋轉(zhuǎn)是要新的計算,不可能使用固定計算函數(shù)可以得到,所以不同的旋轉(zhuǎn)是不同的狀態(tài),這樣就能實現(xiàn)基本的移動和旋轉(zhuǎn),另外可以實現(xiàn)相應(yīng)的游戲功能,即每一個圖案的坐標(biāo)相對位置是不變的,所以實現(xiàn)對應(yīng)的游戲功能就是計算每個坐標(biāo)的相對位置是否相同。至于詳細(xì)想法在下面進(jìn)行細(xì)述。實驗器材/環(huán)境硬件:個人電腦,Altera公司的DE2-70開發(fā)板等;軟件:QuartusII等。實驗設(shè)計思路(驗收實驗)1、分析所需要的七巧板形狀,每個形狀的支撐點,對每個形狀進(jìn)行編號以及每種形狀可以出現(xiàn)的狀態(tài):(1)5個三角形,我們選取直角頂點為支撐點,共存在8個狀態(tài),即每次旋轉(zhuǎn)45度;(2)1個正方形,我們?nèi)我膺x取一個頂點為支撐點,共存在2個狀態(tài),即旋轉(zhuǎn)45度產(chǎn)生的兩種狀態(tài);(3)1個平行四邊形,我們選取角度小的那個頂點為支撐點,共存在4個狀態(tài),每個狀態(tài)有一對平行邊或者平行水平或者平行數(shù)值。2、確定鍵盤上的功能鍵,并對其功能進(jìn)行編號,主要有移動方向鍵(后來共用了2組方向鍵,以便操控),控制旋轉(zhuǎn)鍵,選擇不同圖形鍵,后來添加了初始鍵、兩個預(yù)置圖案的鍵、一個判斷圖形是否符合要求的鍵,并對他們進(jìn)行了相應(yīng)的編碼(4位,最后證明4位有點少)。3、確定功能模塊:(1)從鍵盤接受數(shù)據(jù)并對其進(jìn)行基本出來的模塊,代碼如下:moduleio_ps2(clk,clrn,ps2_clk,ps2_data,data,change); inputclk,clrn,ps2_clk,ps2_data; outputreg[3:0]data; outputchange; wirechange; regready; regoverflow; reg[3:0]count; reg[7:0]temp_data,temp; regkey_f0; reg[9:0]buffer; reg[7:0]fifo[7:0]; reg[2:0]w_ptr,r_ptr; reg[2:0]ps2_clk_sync; always@(posedgeclk)begin ps2_clk_sync<={ps2_clk_sync[1:0],ps2_clk}; end wiresampling=ps2_clk_sync[2]&~ps2_clk_sync[1]; always@(posedgeclk)begin if(clrn==0)begin count<=0; w_ptr<=0; r_ptr<=0; overflow<=0; end else if(sampling)begin if(count==4'd10)begin if((buffer[0]==0)&&(ps2_data)&&(^buffer[9:1]))begin fifo[w_ptr]<=buffer[8:1]; w_ptr<=w_ptr+3'b1; ready<=1'b1; overflow<=overflow|(r_ptr==(w_ptr+3'b1)); end count<=0; end elsebegin buffer[count]<=ps2_data; count<=count+3'b1; end end if(ready)begin temp=fifo[r_ptr-3'd1]; temp_data=fifo[r_ptr]; r_ptr<=r_ptr+3'd1; ready<=1'b0; if(temp_data==8'hf0)begin //temp=fifo[r_ptr-3'd2]; key_f0<=1'b1; end elsebegin key_f0<=1'b0; end end end always@(posedgekey_f0ornegedgeclrn)begin if(!clrn) data<=4'd0; elsebegin case(temp) 8'h0D:data<=4'd1; 8'h29:data<=4'd2; 8'h1D:data<=4'd3; 8'h1C:data<=4'd4; 8'h1B:data<=4'd5; 8'h23:data<=4'd6; 8'h43:data<=4'd7; 8'h3B:data<=4'd8; 8'h42:data<=4'd9; 8'h4B:data<=4'd10; 8'h16:data<=4'd11; 8'h1E:data<=4'd12; 8'h45:data<=4'd13; 8'h5A:data<=4'd14; default: data<=4'd15; endcase end end assignchange=~key_f0;endmodule(2)接受鍵盤模塊送來的數(shù)據(jù),并由此選擇對應(yīng)圖形的狀態(tài),并在開始時對所有圖形位置狀態(tài)進(jìn)行初始化,將每個圖形坐標(biāo)、狀態(tài)送入VGA顯示模塊,代碼如下:moduleps2_vga(din,clk,x0,x1,x2,x3,x4,x5,x6,y0,y1,y2,y3,y4,y5,y6,state0,state1,state2,state3,state4,state5,state6,choose); input[3:0]din; inputclk; outputreg[2:0]choose; outputreg[9:0]x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6; outputreg[2:0]state0,state1,state2,state5,state6; outputreg[1:0]state4; outputregstate3; initialbegin x0=10'd320; y0=10'd240; x1=10'd320; y1=10'd240; x2=10'd384; y2=10'd176; x3=10'd320; y3=10'd176; x4=10'd352; y4=10'd208; x5=10'd288; y5=10'd208; x6=10'd320; y6=10'd240; state3=1'b1; state4=2'd1; end always@(posedgeclk)begin case(din) 4'd1: choose<=choose+1'b1; 4'd2:begin case(choose) 3'd0: state0<=state0+1'b1; 3'd1: state1<=state1+1'b1; 3'd2: state2<=state2+1'b1; 3'd3: state3<=state3+1'b1; 3'd4: state4<=state4+1'b1; 3'd5: state5<=state5+1'b1; 3'd6: state6<=state6+1'b1; default:; endcase end 4'd3:begin case(choose) 3'd0: y0<=y0-10'd5; 3'd1: y1<=y1-10'd5; 3'd2: y2<=y2-10'd5; 3'd3: y3<=y3-10'd5; 3'd4: y4<=y4-10'd5; 3'd5: y5<=y5-10'd5; 3'd6: y6<=y6-10'd5; default:; endcase end 4'd4:begin case(choose) 3'd0: x0<=x0-10'd5; 3'd1: x1<=x1-10'd5; 3'd2: x2<=x2-10'd5; 3'd3: x3<=x3-10'd5; 3'd4: x4<=x4-10'd5; 3'd5: x5<=x5-10'd5; 3'd6: x6<=x6-10'd5; default:; endcase end 4'd5:begin case(choose) 3'd0: y0<=y0+10'd5; 3'd1: y1<=y1+10'd5; 3'd2: y2<=y2+10'd5; 3'd3: y3<=y3+10'd5; 3'd4: y4<=y4+10'd5; 3'd5: y5<=y5+10'd5; 3'd6: y6<=y6+10'd5; default:; endcase end 4'd6:begin case(choose) 3'd0: x0<=x0+10'd5; 3'd1: x1<=x1+10'd5; 3'd2: x2<=x2+10'd5; 3'd3: x3<=x3+10'd5; 3'd4: x4<=x4+10'd5; 3'd5: x5<=x5+10'd5; 3'd6: x6<=x6+10'd5; default:; endcase end 4'd7:begin case(choose) 3'd0: y0<=y0-10'd1; 3'd1: y1<=y1-10'd1; 3'd2: y2<=y2-10'd1; 3'd3: y3<=y3-10'd1; 3'd4: y4<=y4-10'd1; 3'd5: y5<=y5-10'd1; 3'd6: y6<=y6-10'd1; default:; endcase end 4'd8:begin case(choose) 3'd0: x0<=x0-10'd1; 3'd1: x1<=x1-10'd1; 3'd2: x2<=x2-10'd1; 3'd3: x3<=x3-10'd1; 3'd4: x4<=x4-10'd1; 3'd5: x5<=x5-10'd1; 3'd6: x6<=x6-10'd1; default:; endcase end 4'd9:begin case(choose) 3'd0: y0<=y0+10'd1; 3'd1: y1<=y1+10'd1; 3'd2: y2<=y2+10'd1; 3'd3: y3<=y3+10'd1; 3'd4: y4<=y4+10'd1; 3'd5: y5<=y5+10'd1; 3'd6: y6<=y6+10'd1; default:; endcase end 4'd10:begin case(choose) 3'd0: x0<=x0+10'd1; 3'd1: x1<=x1+10'd1; 3'd2: x2<=x2+10'd1; 3'd3: x3<=x3+10'd1; 3'd4: x4<=x4+10'd1; 3'd5: x5<=x5+10'd1; 3'd6: x6<=x6+10'd1; default:; endcase end 4'd11:begin x0<=10'd390; x1<=10'd390; x2<=10'd435; x3<=10'd390; x4<=10'd480; x5<=10'd390; x6<=10'd390; y0<=10'd290; y1<=10'd290; y2<=10'd313; y3<=10'd268; y4<=10'd223; y5<=10'd268; y6<=10'd313; state0<=3'd1; state1<=3'd1; state2<=3'd5; state3<=1'd0; state4<=2'd2; state5<=3'd1; state6<=3'd1; end 4'd12:begin x0<=10'd252; x1<=10'd342; x2<=10'd297; x3<=10'd252; x4<=10'd432; x5<=10'd252; x6<=10'd252; y0<=10'd276; y1<=10'd276; y2<=10'd321; y3<=10'd122; y4<=10'd321; y5<=10'd122; y6<=10'd122; state0<=3'd3; state1<=3'd1; state2<=3'd7; state3<=1'd1; state4<=2'd3; state5<=3'd6; state6<=3'd0; end 4'd13:begin x0=10'd320; y0=10'd240; x1=10'd320; y1=10'd240; x2=10'd384; y2=10'd176; x3=10'd320; y3=10'd176; x4=10'd352; y4=10'd208; x5=10'd288; y5=10'd208; x6=10'd320; y6=10'd240; state3=1'b1; state4=2'd1; state0=3'd0; state1=3'd0; state2=3'd0; state5=3'd0; state6=3'd0; end 4'd14:begin if((x3-1<=x5&&x5<=x3+1)&&(x3-1<=x6&&x6<=x3+1)&&((x3-1<=x0&&x0<=x3+1&&x3+89<=x1&&x1<=x3+91&&state0==3&&state1==1)||(x3-1<=x1&&x1<=x3+1&&x3+89<=x0&&x0<=x3+91&&state0==7&&state1==5))&&((x3+44)<=x2&&x2<=x3+46)&&(x3+179<=x4&&x4<=x3+181)) if((y3-1<=y5&&y5<=y3+1)&&(y3-1<=y6&&y6<=y3+1)&&(y3+153<=y0&&y3+155>=y0)&&(y1-1<=y0&&y0<=y1+1)&&(y0+44<=y4&&y0+46<=y4)&&(y4-1<=y2&&y4+1<=y2)&&((state5==6&&state6==0)||(state6==4&&state5==2))&&(state3==1)&&(state4==3)&&(state2==7)) begin x0=10'd320; y0=10'd240; x1=10'd320; y1=10'd240; x2=10'd384; y2=10'd176; x3=10'd320; y3=10'd176; x4=10'd352; y4=10'd208; x5=10'd288; y5=10'd208; x6=10'd320; y6=10'd240; state3=1'b1; state4=2'd1; state0=3'd0; state1=3'd0; state2=3'd0; state5=3'd0; state6=3'd0; end end default:begin choose<=3'd7; end endcase endendmodule(3)接受中間模塊送來的數(shù)據(jù),并對其進(jìn)行坐標(biāo)范圍和狀態(tài)的識別、計算,最后在顯示器中顯示,代碼如下:moduleio_vga( iCLK_50,//DE2_70clock50MHZ iCLRN,//clear_NconnecttoiSW[0] //toADV7123 choose, x0,x1,x2,x3,x4,x5,x6, y0,y1,y2,y3,y4,y5,y6, state0,state1,state2,state3,state4,state5,state6, oVGA_R, oVGA_G, oVGA_B, oVGA_SYNC_N, oVGA_BLANK_N, oVGA_CLOCK, //toVGA oVGA_HS, oVGA_VS); inputiCLK_50; inputiCLRN; input[2:0]choose; input[9:0]x0,x1,x2,x3,x4,x5,x6,y0,y1,y2,y3,y4,y5,y6; input[2:0]state0,state1,state2,state5,state6; inputstate3; input[1:0]state4; outputreg[9:0]oVGA_R,oVGA_G,oVGA_B; outputoVGA_SYNC_N,oVGA_BLANK_N,oVGA_CLOCK; outputoVGA_HS,oVGA_VS; regvga_clk; reg[9:0]h_count,v_count; regout0,out1,out2,out3,out4,out5,out6;/*-----------------------------------------------------------------常量定義------------------------------------------------------------------*///HorizontalParameter(Pixel) parameterH_SYNC_CYC=96; parameterH_SYNC_BACK=48; parameterH_SYNC_ACT=640; parameterH_SYNC_FRONT=16; parameterH_SYNC_TOTAL=800;//96+48+640+16=800//VirticalParameter(Line) parameterV_SYNC_CYC=2; parameterV_SYNC_BACK=32; parameterV_SYNC_ACT=480; parameterV_SYNC_FRONT=11; parameterV_SYNC_TOTAL=525;//2+32+480+11=525//StartOffset parameterX_START=H_SYNC_CYC+H_SYNC_BACK;//96+48=144before640 parameterY_START=V_SYNC_CYC+V_SYNC_BACK;//2+32=34before480/*-----------------------------------------------------------------*///oVGA_CLKGenerator,50MHZto25MHZ always@(posedgeiCLK_50ornegedgeiCLRN)begin if(iCLRN==0) vga_clk<=1'b1; else vga_clk<=~vga_clk; end//H_SyncCounter always@(posedgevga_clkornegedgeiCLRN)begin if(iCLRN==0) h_count<=10'd0; elseif(h_count==H_SYNC_TOTAL) h_count<=10'd0; else h_count=h_count+10'd1; end//V_SyncCounter always@(posedgevga_clkornegedgeiCLRN)begin if(iCLRN==0) v_count<=10'd0; elseif(h_count==H_SYNC_TOTAL)begin if(v_count==V_SYNC_TOTAL) v_count<=10'd0; else v_count=v_count+10'd1; end end always@(posedgevga_clk)begin case(state0) 3'd0: out0=(h_count>=X_START+x0-64)&&(h_count<=X_START+x0)&&(((v_count>=Y_START+y0-64)&&(v_count<=Y_START+y0)&&(h_count-(x0+X_START)+64<=v_count-(y0+Y_START)+64))||((v_count>=Y_START+y0)&&(v_count<=Y_START+y0+64)&&(v_count+h_count-(x0+X_START)-(y0+Y_START)+64<64))); 3'd1: out0=(h_count>=X_START+x0-90)&&(v_count>=Y_START+y0-90)&&(h_count<=X_START+x0)&&(v_count<=Y_START+y0)&&(h_count+v_count-(x0+X_START)-(y0+Y_START)+180>90); 3'd2: out0=(v_count>=Y_START+y0-64)&&(v_count<=Y_START+y0)&&(((h_count>=X_START+x0-64)&&(h_count<=X_START+x0)&&(h_count-(x0+X_START)+64>=v_count-(y0+Y_START)+64))||((h_count>=X_START+x0)&&(h_count<=X_START+x0+64)&&(h_count+v_count+64-(x0+X_START)-(y0+Y_START)<64))); 3'd3: out0=(h_count>=X_START+x0)&&(v_count>=Y_START+y0-90)&&(h_count<=X_START+x0+90)&&(v_count<=Y_START+y0)&&(h_count-(x0+X_START)<=v_count-(y0+Y_START)+90); 3'd4: out0=(h_count>=X_START+x0)&&(h_count<=X_START+x0+64)&&(((v_count<=Y_START+y0)&&(v_count>=Y_START+y0-64)&&(h_count+v_count-(x0+X_START)-(y0+Y_START)+64>=64))||((v_count>=Y_START+y0)&&(v_count<=Y_START+y0+64)&&(h_count-(x0+X_START)>=v_count-(y0+Y_START)))); 3'd5: out0=(h_count>=X_START+x0)&&(v_count>=Y_START+y0)&&(h_count<=X_START+x0+90)&&(v_count<=Y_START+y0+90)&&(h_count+v_count-(x0+X_START)-(y0+Y_START)<=90); 3'd6: out0=(v_count>=Y_START+y0)&&(v_count<=Y_START+y0+64)&&(((h_count<=X_START+x0+64)&&(h_count>=X_START+x0)&&(h_count-(x0+X_START)<=v_count-(y0+Y_START)))||((h_count<=X_START+x0)&&(h_count>=X_START+x0-64)&&(h_count+v_count-(x0+X_START)-(y0+Y_START)+64>=64))); 3'd7: out0=(h_count>=X_START+x0-90)&&(v_count>=Y_START+y0)&&(h_count<=X_START+x0)&&(v_count<=Y_START+y0+90)&&(h_count-(x0+X_START)+90>=v_count-(y0+Y_START)); endcase case(state1) 3'd0: out1=(v_count>=Y_START+y1)&&(v_count<=Y_START+y1+64)&&(((h_count<=X_START+x1+64)&&(h_count>=X_START+x1)&&(h_count-(x1+X_START)<=v_count-(y1+Y_START)))||((h_count<=X_START+x1)&&(h_count>=X_START+x1-64)&&(h_count+v_count-(x1+X_START)-(y1+Y_START)+64>=64))); 3'd1: out1=(h_count>=X_START+x1-90)&&(v_count>=Y_START+y1)&&(h_count<=X_START+x1)&&(v_count<=Y_START+y1+90)&&(h_count-(x1+X_START)+90>=v_count-(y1+Y_START)); 3'd2: out1=(h_count>=X_START+x1-64)&&(h_count<=X_START+x1)&&(((v_count>=Y_START+y1-64)&&(v_count<=Y_START+y1)&&(h_count-(x1+X_START)+64<=v_count-(y1+Y_START)+64))||((v_count>=Y_START+y1)&&(v_count<=Y_START+y1+64)&&(v_count+h_count-(x1+X_START)-(y1+Y_START)+64<64))); 3'd3: out1=(h_count>=X_START+x1-90)&&(v_count>=Y_START+y1-90)&&(h_count<=X_START+x1)&&(v_count<=Y_START+y1)&&(h_count+v_count-(x1+X_START)-(y1+Y_START)+180>90); 3'd4: out1=(v_count>=Y_START+y1-64)&&(v_count<=Y_START+y1)&&(((h_count>=X_START+x1-64)&&(h_count<=X_START+x1)&&(h_count-(x1+X_START)+64>=v_count-(y1+Y_START)+64))||((h_count>=X_START+x1)&&(h_count<=X_START+x1+64)&&(h_count+v_count+64-(x1+X_START)-(y1+Y_START)<64))); 3'd5: out1=(h_count>=X_START+x1)&&(v_count>=Y_START+y1-90)&&(h_count<=X_START+x1+90)&&(v_count<=Y_START+y1)&&(h_count-(x1+X_START)<=v_count-(y1+Y_START)+90); 3'd6: out1=(h_count>=X_START+x1)&&(h_count<=X_START+x1+64)&&(((v_count<=Y_START+y1)&&(v_count>=Y_START+y1-64)&&(h_count+v_count-(x1+X_START)-(y1+Y_START)+64>=64))||((v_count>=Y_START+y1)&&(v_count<=Y_START+y1+64)&&(h_count-(x1+X_START)>=v_count-(y1+Y_START)))); 3'd7: out1=(h_count>=X_START+x1)&&(v_count>=Y_START+y1)&&(h_count<=X_START+x1+90)&&(v_count<=Y_START+y1+90)&&(h_count+v_count-(x1+X_START)-(y1+Y_START)<=90); endcase case(state2) 3'd0: out2=(h_count>=X_START+x2-64)&&(v_count>=Y_START+y2)&&(h_count<=X_START+x2)&&(v_count<=Y_START+y2+64)&&(h_count-(x2+X_START)+64>=v_count-(y2+Y_START)); 3'd1: out2=(h_count>=X_START+x2-45)&&(h_count<=X_START+x2)&&(((v_count>=Y_START+y2-45)&&(v_count<=Y_START+y2)&&(h_count-(x2+X_START)+45<=v_count-(y2+Y_START)+45))||((v_count>=Y_START+y2)&&(v_count<=Y_START+y2+45)&&(v_count+h_count-(x2+X_START)-(y2+Y_START)+45<45))); 3'd2: out2=(h_count>=X_START+x2-64)&&(v_count>=Y_START+y2-64)&&(h_count<=X_START+x2)&&(v_count<=Y_START+y2)&&(h_count+v_count-(x2+X_START)-(y2+Y_START)+128>64); 3'd3: out2=(v_count>=Y_START+y2-45)&&(v_count<=Y_START+y2)&&(((h_count>=X_START+x2-45)&&(h_count<=X_START+x2)&&(h_count-(x2+X_START)+45>=v_count-(y2+Y_START)+45))||((h_count>=X_START+x2)&&(h_count<=X_START+x2+45)&&(h_count+v_count+45-(x2+X_START)-(y2+Y_START)<45))); 3'd4: out2=(h_count>=X_START+x2)&&(v_count>=Y_START+y2-64)&&(h_count<=X_START+x2+64)&&(v_count<=Y_START+y2)&&(h_count-(x2+X_START)<=v_count-(y2+Y_START)+64); 3'd5: out2=(h_count>=X_START+x2)&&(h_count<=X_START+x2+45)&&(((v_count<=Y_START+y2)&&(v_count>=Y_START+y2-45)&&(h_count+v_count-(x2+X_START)-(y2+Y_START)+45>=45))||((v_count>=Y_START+y2)&&(v_count<=Y_START+y2+45)&&(h_count-(x2+X_START)>=v_count-(y2+Y_START)))); 3'd6: out2=(h_count>=X_START+x2)&&(v_count>=Y_START+y2)&&(h_count<=X_START+x2+64)&&(v_count<=Y_START+y2+64)&&(h_count+v_count-(x2+X_START)-(y2+Y_START)<=64); 3'd7: out2=(v_count>=Y_START+y2)&&(v_count<=Y_START+y2+45)&&(((h_count<=X_START+x2+45)&&(h_count>=X_START+x2)&&(h_count-(x2+X_START)<=v_count-(y2+Y_START)))||((h_count<=X_START+x2)&&(h_count>=X_START+x2-45)&&(h_count+v_count-(x2+X_START)-(y2+Y_START)+45>=45))); endcase case(state3) 1'b0: out3=(h_count>=X_START+x3)&&(v_count>=Y_START+y3)&&(h_count<=X_START+x3+45)&&(v_count<=Y_START+y3+45); 1'b1: out3=((h_count>=X_START+x3-32)&&(h_count<=X_START+x3)&&(v_count>=Y_START+y3)&&(v_count<=Y_START+y3+32)&&(h_count-(X_START+x3)+32+v_count-(Y_START+y3)>=32))||((h_count>=X_START+x3)&&(v_count>=Y_START+y3)&&(h_count<=X_START+x3+32)&&(v_count<=Y_START+y3+32)&&(h_count-(X_START+x3)<=v_count-(Y_START+y3)))|| ((h_count>=X_START+x3-32)&&(h_count<=X_START+x3)&&(v_count>=Y_START+y3+32)&&(v_count<=Y_START+y3+64)&&(h_count-(X_START+x3)+32>=v_count-(Y_START+y3)-32))||((h_count>=X_START+x3)&&(h_count<=X_START+x3+32)&&(v_count>=Y_START+y3+32)&&(v_count<=Y_START+y3+64)&&(h_count-(X_START+x3)+v_count-(Y_START+y3)-32<=32)); endcase case(state4) 2'd0: out4=(v_count>=Y_START+y4)&&(v_count<=Y_START+y4+45)&&(((h_count>=X_START+x4)&&(h_count<=X_START+x4+45)&&(h_count-(X_START+x4)>=v_count-(Y_START+y4)))||((h_count>=X_START+x4+45)&&(h_count<=X_START+x4+90)&&(h_count-(X_START+x4)-45<=v_count-(Y_START+y4)))); 2'd1: out4=(h_count>=X_START+x4)&&(h_count<=X_START+x4+32)&&(((v_count>=Y_START+y4)&&(v_count<=Y_START+y4+32)&&(h_count-(X_START+x4)<=v_count-(Y_START+y4)))||((v_count>=Y_START+y4+32)&&(v_count<=Y_START+y4+64))||((v_count>=Y_START+y4+64)&&(v_count<=Y_START+y4+96)&&(h_count-(X_START+x4)>=v_count-(Y_START+y4)-64))); 2'd2: out4=(h_count>=X_START+x4-45)&&(v_count>=Y_START+y4)&&(h_count<=X_START+x4)&&(v_count<=Y_START+y4+90)&&(h_count-(X_START+x4)+45+v_count-(Y_START+y4)>=45)&&(h_count-(X_START+x4)+v_count-(Y_START+y4)<=45); 2'd3: out4=(h_count>=X_START+x4-90)&&(v_count>=Y_START+y4)&&(h_count<=X_START+x4)&&(v_count<=Y_START+y4+45)&&(h_count-(X_START+x4)+90+v_count-(Y_START+y4)>=45)&&(h_count-(X_START+x4)+45+v_count-(Y_START+y4)<=45); endcase case(state5) 3'd0: out5=(v_count>=Y_START+y5-32)&&(v_count<=Y_START+y5)&&(((h_count>=X_START+x5-32)&&(h_count<=X_START+x5)&&(h_count-(x5+X_START)+32>=v_count-(y5+Y_START)+32))||((h_count>=X_START+x5)&&(h_count<=X_START+x5+32)&&(h_count+v_count+32-(x5+X_START)-(y5+Y_START)<32))); 3'd1: out5=(h_count>=X_START+x5)&&(v_count>=Y_START+y5-45)&&(h_count<=X_START+x5+45)&&(v_count<=Y_START+y5)&&(h_count-(x5+X_START)<=v_count-(y5+Y_START)+45); 3'd2: out5=(h_count>=X_START+x5)&&(h_count<=X_START+x5+32)&&(((v_count<=Y_START+y5)&&(v_count>=Y_START+y5-32)&&(h_count+v_count-(x5+X_START)-(y5+Y_START)+32>=32))||((v_count>=Y_START+y5)&&(v_count<=Y_START+y5+32)&&(h_count-(x5+X_START)>=v_count-(y5+Y_START)))); 3'd3: out5=(h_count>=X_START+x5)&&(v_count>=Y_START+y5)&&(h_count<=X_START+x5+45)&&(v_count<=Y_START+y5+45)&&(h_count+v_count-(x5+X_START)-(y5+Y_START)<=45); 3'd4: out5=(v_count>=Y_START+y5)&&(v_count<=Y_START+y5+32)&&(((h_count<=X_START+x5+32)&&(h_count>=X_START+x5)&&(h_count-(x5+X_START)<=v_count-(y5+Y_START)))||((h_count<=X_START+x5)&&(h_count>=X_START+x5-32)&&(h_count+v_count-(x5+X_START)-(y5+Y_START)+32>=32))); 3'd5: out5=(h_count>=X_START+x5-45)&&(v_count>=Y_START+y5)&&(h_count<=X_START+x5)&&(v_count<=Y_START+y5+45)&&(h_count-(x5+X_START)+45>=v_count-(y5+Y_START)); 3'd6: out5=(h_count>=X_START+x5-32)&&(h_count<=X_START+x5)&&(((v_count>=Y_START+y5-32)&&(v_count<=Y_START+y5)&&(h_count-(x5+X_START)+32<=v_count-(y5+Y_START)+32))||((v_count>=Y_START+y5)&&(v_count<=Y_START+y5+32)&&(v_count+h_count-(x5+X_START)-(y5+Y_START)+32<32))); 3'd7: out5=(h_count>=X_START+x5-45)&&(v_count>=Y_START+y5-45)&&(h_count<=X_START+x5)&&(v_count<=Y_START+y5)&&(h_count+v_count-(x5+X_START)-(y5+Y_START)+90>45); endcase case(state6) 3'd0: out6=(h_count>=X_START+x6)&&(h_count<=X_START+x6+32)&&(((v_count<=Y_START+y6)&&(v_count>=Y_START+y6-32)&&(h_count+v_count-(x6+X_START)-(y6+Y_START)+32>=32))||((v_count>=Y_START+y6)&&(v_count<=Y_START+y6+32)&&(h_count-(x6+X_START)>=v_count-(y6+Y_START)))); 3'd1: out6=(h_count>=X_START+x6)&&(v_count>=Y_START+y6)&&(h_count<=X_START+x6+45)&&(v_count<=Y_START+y6+45)&&(h_count+v_count-(x6+X_START)-(y6+Y_START)<=45); 3'd2: out6=(v_count>=Y_START+y6)&&(v_count<=Y_START+y6+32)&&(((h_count<=X_START+x6+32)&&(h_count>=X_START+x6)&&(h_count-(x6+X_START)<=v_count-(y6+Y_START)))||((h_count<=X_START+x6)&&(h_count>=X_START+x6-32)&&(h_count+v_count-(x6+X_START)-(y6+Y_START)+32>=32))); 3'd3: out6=(h_count>=X_START+x6-45)&&(v_count>=Y_START+y6)&&(h_count<=X_START+x6)&&(v_count<=Y_START+y6+45)&&(h_count-(x6+X_START)+45>=v_count-(y6+Y_START)); 3'd4: out6=(h_count>=X_START+x6-32)&&(h_count<=X_START+x6)&&(((v_count>=Y_START+y6-32)&&(v_count<=Y_START+y6)&&(h_count-(x6+X_START)+32<=v_count-(y6+Y_START)+32))||((v_count>=Y_START+y6)&&(v_count<=Y_START+y6+32)&&(v_count+h_count-(x6+X_START)-(y6+Y_START)+32<32))); 3'd5: out6=(h_count>=X_START+x6-45)&&(v_count>=Y_START+y6-45)&&(h_count<=X_START+x6)&&(v_count<=Y_START+y6)&&(h_count+v_count-(x6+X_START)-(y6+Y_START)+90>45); 3'd6: out6=(v_count>=Y_START+y6-32)&&(v_count<=Y_START+y6)&&(((h_count>=X_START+x6-32)&&(h_count<=X_START+x6)&&(h_count-(x6+X_START)+32>=v_count-(y6+Y_START)+32))||((h_count>=X_START+x6)&&(h_count<=X_START+x6+32)&&(h_count+v_count+32-(x6+X_START)-(y6+Y_START)<32))); 3'd7: out6=(h_count>=X_START+x6)&&(v_count>=Y_START+y6-45)&&(h_count<=X_START+x6+45)&&(v_count<=Y_START+y6)&&(h_count-(x6+X_START)<=v_count-(y6+Y_START)+45); endcase if(out0)begin oVGA_R<=10'b1111111111; oVGA_G<=10'b0000000000; oVGA_B<=10'b0000000000; end elseif(out1)begin oVGA_R<=10'b0000000000; oVGA_G<=10'b1111111111; oVGA_B<=10'b0000000000; end elseif(out2)begin oVGA_R<=10'b0000000000; oVGA_G<=10'b0000000000; oVGA_B<=10'b1111111111; end elseif(out3)begin oVGA_R<=10'b1111111111; oVGA_G<=10'b1111111111; oVGA_B<=10'b0000000000; end elseif(out4)begin oVGA_R<=10'b1111111111; oVGA_G<=10'b0000000000; oVGA_B<=10'b1111111111; end elseif(out5)begin oVGA_R<=10'b0000000000; oVGA_G<=10'b1111111111; oVGA_B<=10'b1111111111; end elseif(out6)begin oVGA_R<=10'b1000000000; oVGA_G<=10'b1000000000; oVGA_B<=10'b1000000000; end elsebegin oVGA_R<=10'b0000000000; oVGA_G<=10'b0000000000; oVGA_B<=10'b0000000000; end case(choose) 3'd0: if(out0)begin oVGA_R<=10'b1111111111; oVGA_G<=10'b1111111111; oVGA_B<=10'b11
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨床腫瘤內(nèi)科診療體系與發(fā)展趨勢
- Brand KPIs for sauces condiments Tabasco in the United Kingdom-外文版培訓(xùn)課件(2025.2)
- 集體水庫管理協(xié)議書
- 菜地承包出售協(xié)議書
- 顧客簽訂保障協(xié)議書
- 項目借款投資協(xié)議書
- 鞋面加工合同協(xié)議書
- 風(fēng)管廠家轉(zhuǎn)讓協(xié)議書
- 車禍自行協(xié)商協(xié)議書
- 計劃財產(chǎn)分割協(xié)議書
- 高溫設(shè)備維護(hù)保養(yǎng)程序培訓(xùn)
- 護(hù)士進(jìn)修匯報護(hù)理專業(yè)發(fā)展趨勢分析
- KISSSOFT操作與齒輪設(shè)計培訓(xùn)教程
- 廣東省廣州市越秀區(qū)2024年中考二模語文試卷附答案
- 城鄉(xiāng)規(guī)劃原理題目及答案
- 25道中國建筑商務(wù)合約經(jīng)理崗位常見面試問題含HR常問問題考察點及參考回答
- JGT116-2012 聚碳酸酯(PC)中空板
- DBJ-43T507-2019湖南省建筑物移動通信基礎(chǔ)設(shè)施建設(shè)標(biāo)準(zhǔn)
- 《華為國際化之路》課件
- 高空作業(yè)安全責(zé)任協(xié)議書防盜網(wǎng)
- 關(guān)于地下室滲漏水問題的總結(jié)及堵漏措施
評論
0/150
提交評論