|
module whole(clk,btn1,btn2,btn3,CP_P,CP_N,CW_P,CW_N);<br />input clk,btn1,btn2,btn3;<br />output CP_P,CP_N,CW_P,CW_N;<br />reg CP_P=0,CP_N=0,CW_P=0,CW_N=0;<br />reg[24:0] count=0;<br />reg flag=0;<br />reg rst=0,dir=0;<br />reg btn1_en=0,btn2_en=0,btn3_en=0;<br />reg btn1_blk=0,btn2_blk=0,btn3_blk=0;<br />reg S1=0,S2=0;<br />integer Cn=0;<br />integer step=0;<br />integer distance=0;<br /><br />always @(posedge btn1)<br /> begin<br /> if(btn2==0&&btn3==0)<br /> begin<br /> btn1_en=1;<br /> end<br /> end<br /><br />always @(posedge btn2)<br /> begin<br /> if(btn1==0&&btn3==0)<br /> begin<br /> btn2_en=1;<br /> end<br /> end<br /> <br />always @(posedge btn3)<br /> begin<br /> if(btn1==0&&btn2==0)<br /> begin<br /> btn3_en=1;<br /> end<br /> end<br /><br />always @(step or distance)<br /> begin<br /> if(btn1_en==1) btn1_blk=1 ; //move <br /> if(btn1_blk==1)<br /> begin<br /> CW_P=0; //direction<br /> if(btn1)<br /> begin<br /> if(step<200) //reallocate accelerate<br /> begin<br /> S1=1;<br /> S2=0; <br /> end<br /> else //reallocate invariablenes speed<br /> begin<br /> S1=1;<br /> S2=1;<br /> end <br /> end <br /> else <br /> if(step>0) //reallocate decelerate<br /> begin<br /> S1=0;<br /> S2=1;<br /> end<br /> else <br /> begin //stop<br /> S1=0;<br /> S2=0;<br /> btn1_blk=0; end <br /> end<br /><br /> if(btn2_en==1) btn2_blk=1;<br /> if(btn2_blk==1)<br /> begin<br /> CW_P=0; //direction<br /> if(btn2)<br /> begin<br /> if(step<333) //reallocate accelerate<br /> begin<br /> S1=1;<br /> S2=0; <br /> end<br /> else //reallocate invariablenes speed<br /> begin<br /> S1=1;<br /> S2=1;<br /> end <br /> end <br /> else <br /> if(step>0) //reallocate decelerate<br /> begin<br /> S1=0;<br /> S2=1;<br /> end<br /> else <br /> begin //stop<br /> S1=0;<br /> S2=0;<br /> btn2_blk=0;<br /> end<br /> end<br /><br /> if(btn3_en==1) btn3_blk=1;<br /> if(btn3_blk==1)<br /> begin<br /> CW_P=1; //direction<br /> if(btn3)<br /> begin<br /> if(step<200) //reallocate accelerate<br /> begin<br /> S1=1;<br /> S2=0; <br /> end<br /> else //reallocate invariablenes speed<br /> begin<br /> S1=1;<br /> S2=1;<br /> end <br /> end <br /> else <br /> if(step>0) //reallocate decelerate<br /> begin<br /> S1=0;<br /> S2=1;<br /> end<br /> else <br /> begin //stop<br /> S1=0;<br /> S2=0;<br /> btn3_blk=0;<br /> end<br /> end<br /> <br /> end<br /> <br />always @(posedge clk)<br /> begin<br /> CP_N=0;<br /> CW_N=0;<br /> if(rst) //reset<br /> begin<br /> distance=0;<br /> step=0;<br /> end <br /> <br /> if(S1==0&&S2==0) //stop<br /> begin<br /> CP_P=0;<br /> step=0;<br /> end<br /><br /> if(S1==1&&S2==0) //accelerate<br /> begin<br /> if(count<Cn)<br /> begin<br /> count=count+1;<br /> begin<br /> if(count<500)<br /> begin CP_P=1;<br /> end<br /> else<br /> begin CP_P=0;<br /> end<br /> end<br /> end<br /> else<br /> begin<br /> count=0;<br /> step=step+1;<br /> distance=distance+1;<br /> end <br /> end<br /><br /> <br /> if(S1==0&&S2==1) //decelerate<br /> begin<br /> if(count<Cn)<br /> begin<br /> count=count+1;<br /> begin<br /> if(count<500)<br /> begin<br /> CP_P=1;<br /> end<br /> else<br /> begin<br /> CP_P=0;<br /> end<br /> end<br /> end<br /> else<br /> begin<br /> count=0;<br /> step=step-1;<br /> distance=distance+1;<br /> end <br /> end<br /><br /> <br /> if(S1==1&&S2==1) //invariablenes speed<br /> begin<br /> if(count<Cn)<br /> begin<br /> count=count+1;<br /> begin<br /> if(count<500)<br /> begin<br /> CP_P=1;<br /> end<br /> else<br /> begin<br /> CP_P=0;<br /> end<br /> end<br /> end<br /> else<br /> begin<br /> count=0;<br /> distance=distance+1;<br /> end<br /> end<br /> <br /> case(step)<br /> 0 :Cn= 2738613 ;<br /> 1 :Cn= 1134371 ;<br /> 2 :Cn= 870433 ;<br /> 3 :Cn= 733809 ;<br /> 4 :Cn= 646499 ;<br /> 5 :Cn= 584480 ;<br /> 6 :Cn= 537484 ;<br /> 7 :Cn= 500278 ;<br /> 8 :Cn= 469872 ; <br /> 9 :Cn= 444416 ;<br /> 10 :Cn= 422697 ;<br /> 11 :Cn= 403882 ;<br /> 12 :Cn= 387376 ;<br /> 13 :Cn= 372742 ;<br /> 14 :Cn= 359651 ;<br /> 15 :Cn= 347849 ;<br /> 16 :Cn= 337139 ;<br /> 17 :Cn= 327360 ;<br /> 18 :Cn= 318386 ;<br /> 19 :Cn= 310112 ;<br /> 20 :Cn= 302452 ;<br /> 21 :Cn= 295332 ;<br /> 22 :Cn= 288693 ;<br /> 23 :Cn= 282482 ;<br /> 24 :Cn= 276656 ;<br /> 25 :Cn= 271176 ;<br /> 26 :Cn= 266009 ;<br /> 27 :Cn= 261127 ;<br /> 28 :Cn= 256504 ;<br /> 29 :Cn= 252119 ;<br /> 30 :Cn= 247951 ;<br /> 31 :Cn= 243983 ;<br /> 32 :Cn= 240199 ;<br /> 33 :Cn= 236587 ;<br /> 34 :Cn= 233132 ;<br /> 35 :Cn= 229825 ;<br /> 36 :Cn= 226655 ;<br /> 37 :Cn= 223612 ;<br /> 38 :Cn= 220688 ;<br /> 39 :Cn= 217877 ;<br /> 40 :Cn= 215170 ;<br /> 41 :Cn= 212561 ;<br /> 42 :Cn= 210046 ;<br /> 43 :Cn= 207617 ;<br /> 44 :Cn= 205271 ;<br /> 45 :Cn= 203003 ;<br /> 46 :Cn= 200808 ;<br /> 47 :Cn= 198683 ;<br /> 48 :Cn= 196624 ;<br /> 49 :Cn= 194627 ;<br /> 50 :Cn= 192690 ;<br /> 51 :Cn= 190810 ;<br /> 52 :Cn= 188984 ;<br /> 53 :Cn= 187210 ;<br /> 54 :Cn= 185484 ;<br /> 55 :Cn= 183806 ;<br /> 56 :Cn= 182172 ;<br /> 57 :Cn= 180581 ;<br /> 58 :Cn= 179030 ;<br /> 59 :Cn= 177519 ;<br /> 60 :Cn= 176046 ;<br /> 61 :Cn= 174609 ;<br /> 62 :Cn= 173206 ;<br /> 63 :Cn= 171837 ;<br /> 64 :Cn= 170500 ;<br /> 65 :Cn= 169193 ;<br /> 66 :Cn= 167916 ;<br /> 67 :Cn= 166668 ;<br /> 68 :Cn= 165447 ;<br /> 69 :Cn= 164252 ;<br /> 70 :Cn= 163083 ;<br /> 71 :Cn= 161939 ;<br /> 72 :Cn= 160818 ;<br /> 73 :Cn= 159720 ;<br /> 74 :Cn= 158644 ;<br /> 75 :Cn= 157590 ;<br /> 76 :Cn= 156557 ;<br /> 77 :Cn= 155544 ;<br /> 78 :Cn= 154550 ;<br /> 79 :Cn= 153575 ;<br /> 80 :Cn= 152618 ;<br /> 81:Cn=151678;<br /> 82:Cn=150756;<br /> 83:Cn=149851;<br /> 84:Cn=148962;<br /> 85:Cn=148088;<br /> 86:Cn=147229;<br /> 87:Cn=146386;<br /> 88:Cn=145556;<br /> 89:Cn=144741;<br /> 90:Cn=143939;<br /> 91:Cn=143150;<br /> 92:Cn=142374;<br /> 93:Cn=141611;<br /> 94:Cn=140860;<br /> 95:Cn=140120;<br /> 96:Cn=139392;<br /> 97:Cn=138676;<br /> 98:Cn=137970;<br /> 99:Cn=137275;<br /> 100:Cn=136590;<br /> 101:Cn=135915;<br /> 102:Cn=135251;<br /> 103:Cn=134596;<br /> 104:Cn=133950;<br /> 105:Cn=133314;<br /> 106:Cn=132687;<br /> 107:Cn=132068;<br /> 108:Cn=131458;<br /> 109:Cn=130856;<br /> 110:Cn=130263;<br /> 111 :Cn= 129677 ;<br /> 112 :Cn= 129100 ;<br /> 113 :Cn= 128530 ;<br /> 114 :Cn= 127967 ;<br /> 115 :Cn= 127412 ;<br /> 116 :Cn= 126864 ;<br /> 117 :Cn= 126323 ;<br /> 118 :Cn= 125789 ;<br /> 119 :Cn= 125262 ;<br /> 120 :Cn= 124741 ;<br /> 121 :Cn= 124226 ;<br /> 122 :Cn= 123718 ;<br /> 123 :Cn= 123216 ;<br /> 124 :Cn= 122720 ;<br /> 125 :Cn= 122231 ;<br /> 126 :Cn= 121746 ;<br /> 127 :Cn= 121268 ;<br /> 128 :Cn= 120795 ;<br /> 129 :Cn= 120328 ;<br /> 130 :Cn= 119866 ;<br /> 131 :Cn= 119409 ;<br /> 132 :Cn= 118958 ;<br /> 133 :Cn= 118512 ;<br /> 134 :Cn= 118070 ;<br /> 135 :Cn= 117634 ;<br /> 136 :Cn= 117202 ;<br /> 137 :Cn= 116775 ;<br /> 138 :Cn= 116353 ;<br /> 139 :Cn= 115935 ;<br /> 140 :Cn= 115522 ;<br /> 141 :Cn= 115113 ;<br /> 142 :Cn= 114708 ;<br /> 143 :Cn= 114308 ;<br /> 144 :Cn= 113911 ;<br /> 145 :Cn= 113519 ;<br /> 146 :Cn= 113131 ;<br /> 147 :Cn= 112747 ;<br /> 148 :Cn= 112367 ;<br /> 149 :Cn= 111990 ;<br /> 150 :Cn= 111618 ;<br /> 151 :Cn= 111249 ;<br /> 152 :Cn= 110883 ;<br /> 153 :Cn= 110522 ;<br /> 154 :Cn= 110163 ;<br /> 155 :Cn= 109809 ;<br /> 156 :Cn= 109457 ;<br /> 157 :Cn= 109109 ;<br /> 158 :Cn= 108764 ;<br /> 159 :Cn= 108423 ;<br /> 160 :Cn= 108085 ;<br /> 161 :Cn= 107749 ;<br /> 162 :Cn= 107417 ;<br /> 163 :Cn= 107088 ;<br /> 164 :Cn= 106762 ;<br /> 165 :Cn= 106439 ;<br /> 166 :Cn= 106119 ;<br /> 167 :Cn= 105802 ;<br /> 168 :Cn= 105488 ;<br /> 169 :Cn= 105176 ;<br /> 170 :Cn= 104867 ;<br /> 171 :Cn= 104561 ;<br /> 172 :Cn= 104257 ;<br /> 173 :Cn= 103956 ;<br /> 174 :Cn= 103658 ;<br /> 175 :Cn= 103362 ;<br /> 176 :Cn= 103069 ;<br /> 177 :Cn= 102778 ;<br /> 178 :Cn= 102490 ;<br /> 179 :Cn= 102204 ;<br /> 180 :Cn= 101921 ;<br /> 181 :Cn= 101640 ;<br /> 182 :Cn= 101361 ;<br /> 183 :Cn= 101084 ;<br /> 184 :Cn= 100810 ;<br /> 185 :Cn= 100538 ;<br /> 186 :Cn= 100268 ;<br /> 187 :Cn= 100000 ;<br /> 188 :Cn= 99734 ;<br /> 189 :Cn= 99471 ;<br /> 190 :Cn= 99210 ;<br /> 191 :Cn= 98950 ;<br /> 192 :Cn= 98693 ;<br /> 193 :Cn= 98437 ;<br /> 194 :Cn= 98184 ;<br /> 195 :Cn= 97933 ;<br /> 196 :Cn= 97683 ;<br /> 197 :Cn= 97436 ;<br /> 198 :Cn= 97190 ;<br /> 199 :Cn= 96946 ;<br /> 200 :Cn= 96704 ;<br /> 201 :Cn= 96464 ;<br /> 202 :Cn= 96225 ;<br /> 203 :Cn= 95988 ;<br /> 204 :Cn= 95753 ;<br /> 205 :Cn= 95520 ;<br /> 206 :Cn= 95289 ;<br /> 207 :Cn= 95059 ;<br /> 208 :Cn= 94830 ;<br /> 209 :Cn= 94604 ;<br /> 210 :Cn= 94379 ;<br /> 211 :Cn= 94156 ;<br /> 212 :Cn= 93934 ;<br /> 213 :Cn= 93713 ;<br /> 214 :Cn= 93495 ;<br /> 215 :Cn= 93278 ;<br /> 216 :Cn= 93062 ;<br /> 217 :Cn= 92848 ;<br /> 218 :Cn= 92635 ;<br /> 219 :Cn= 92424 ;<br /> 220 :Cn= 92214 ;<br /> 221 :Cn= 92006 ;<br /> 222 :Cn= 91799 ;<br /> 223 :Cn= 91593 ;<br /> 224 :Cn= 91389 ;<br /> 225 :Cn= 91186 ;<br /> 226 :Cn= 90984 ;<br /> 227 :Cn= 90784 ;<br /> 228 :Cn= 90585 ;<br /> 229 :Cn= 90388 ;<br /> 230 :Cn= 90191 ;<br /> 231 :Cn= 89996 ;<br /> 232 :Cn= 89803 ;<br /> 233 :Cn= 89610 ;<br /> 234 :Cn= 89419 ;<br /> 235 :Cn= 89229 ;<br /> 236 :Cn= 89040 ;<br /> 237 :Cn= 88852 ;<br /> 238 :Cn= 88666 ;<br /> 239 :Cn= 88481 ;<br /> 240 :Cn= 88296 ;<br /> 241 :Cn= 88113 ;<br /> 242 :Cn= 87932 ;<br /> 243 :Cn= 87751 ;<br /> 244 :Cn= 87571 ;<br /> 245 :Cn= 87393 ;<br /> 246 :Cn= 87215 ;<br /> 247 :Cn= 87039 ;<br /> 248 :Cn= 86864 ;<br /> 249 :Cn= 86689 ;<br /> 250 :Cn= 86516 ;<br /> 251 :Cn= 86344 ;<br /> 252 :Cn= 86173 ;<br /> 253 :Cn= 86003 ;<br /> 254 :Cn= 85834 ;<br /> 255 :Cn= 85665 ;<br /> 256 :Cn= 85498 ;<br /> 257 :Cn= 85332 ;<br /> 258 :Cn= 85167 ;<br /> 259 :Cn= 85003 ;<br /> 260 :Cn= 84839 ;<br /> 261 :Cn= 84677 ;<br /> 262 :Cn= 84515 ;<br /> 263 :Cn= 84355 ;<br /> 264 :Cn= 84195 ;<br /> 265 :Cn= 84037 ;<br /> 266 :Cn= 83879 ;<br /> 267 :Cn= 83722 ;<br /> 268 :Cn= 83566 ;<br /> 269 :Cn= 83411 ;<br /> 270 :Cn= 83256 ;<br /> 271 :Cn= 83103 ;<br /> 272 :Cn= 82950 ;<br /> 273 :Cn= 82798 ;<br /> 274 :Cn= 82647 ;<br /> 275 :Cn= 82497 ;<br /> 276 :Cn= 82348 ;<br /> 277 :Cn= 82200 ;<br /> 278 :Cn= 82052 ;<br /> 279 :Cn= 81905 ;<br /> 280 :Cn= 81759 ;<br /> 281 :Cn= 81613 ;<br /> 282 :Cn= 81469 ;<br /> 283 :Cn= 81325 ;<br /> 284 :Cn= 81182 ;<br /> 285 :Cn= 81040 ;<br /> 286 :Cn= 80898 ;<br /> 287 :Cn= 80757 ;<br /> 288 :Cn= 80617 ;<br /> 289 :Cn= 80478 ;<br /> 290 :Cn= 80339 ;<br /> 291 :Cn= 80201 ;<br /> 292 :Cn= 80064 ;<br /> 293 :Cn= 79928 ;<br /> 294 :Cn= 79792 ;<br /> 295 :Cn= 79657 ;<br /> 296 :Cn= 79522 ;<br /> 297 :Cn= 79388 ;<br /> 298 :Cn= 79255 ;<br />   |
|