Verilog Code
-
Upload
blesson123 -
Category
Documents
-
view
151 -
download
2
Transcript of Verilog Code
![Page 1: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/1.jpg)
1. module lift2(clk, //1KHz
2. reset, //reset signal,low(0) active
3. //maintain, //maintain signal,low(0) active
4. up1, //1st floor ,request for up,high active
5. up2, //2nd floor ,request for up,high active
6. up3, //3rd floor,request for up,high active
7. //up4, //4th floor ,request for up,high active
8. //up5, //5th floor ,request for up,high active
9. down2, //2th floor ,request for down,high active
10. down3, //3th floor ,request for down,high active
11. down4, //4th floor ,request for down,high active
12.
13. inter_button1, //inside of the lift,request for 1st floor,high active
14. inter_button2, //inside of the lift,request for 2nd floor,high active
15. inter_button3, //inside of the lift,request for 3rd floor,high active
16. inter_button4, //inside of the lift,request for 4th floor,high active
17.
18. close_door, //the signal for close the lift'door,high active
19. open_door, //the signal for open the lift'door,high active
20. floor, //the signal for the lift arriving at the floor,high active
21.
22. led_up1, //output
23. led_up2, //output
24. led_up3, //output
25.
26. led_down2, //output
27. led_down3, //output
28. led_down4, //output
29. inter1, //output
30. inter2, //output
![Page 2: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/2.jpg)
31. inter3, //output
32. inter4, //output
33. status, //output 1--operate 0--stop
34. door, //output 0--close,1--open
35. number, //output
36. r_up1,r_up2,r_up3,r_down2,r_down3,r_down4,
37. r_inter1,r_inter2,r_inter3,r_inter4
38. );
39. input clk,reset/*,maintain*/;
40. input up1,up2,up3,down2,down3,down4;
41. input inter_button1,inter_button2,inter_button3,inter_button4;
42. input close_door,open_door;
43. input floor;
44.
45. output led_up1,led_up2,led_up3;
46. output led_down2, led_down3, led_down4;
47. output inter1,inter2,inter3,inter4;
48. output door; //0--close,1--open
49. output [1:0]number;
50. output status;
51. output [1:0]r_up1,r_up2,r_up3,r_down2,r_down3,r_down4, r_inter1,r_inter2,r_inter3,r_inter4;
52.
53. reg led_up1,led_up2,led_up3;
54. reg led_down2, led_down3, led_down4;
55. reg inter1,inter2,inter3,inter4;
56. reg door;
57.
58. reg [1:0]direction; //11--up,00--down
59. reg [1:0]cnt; //count for the floor
60. reg [2:0]cnt_time; //count the time for the door
![Page 3: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/3.jpg)
61. reg status; //operate--1,stop--0
62.
63. reg [1:0]r_up1,r_up2,r_up3,r_down2,r_down3,r_down4;
64. reg [1:0]r_inter1,r_inter2,r_inter3,r_inter4;
65.
66. parameter f1=2'd0,//1st floor
67. f2=2'd1,//2nd floor
68. f3=2'd2,//3rd floor
69. f4=2'd3;//4th floor
70.
71. parameter s1=2'd0,//1st floor
72. s2=2'd1,//2nd floor
73. s3=2'd2,//3rd floor
74. s4=2'd3;//4th floor
75. wire t1=( r_up1!=f1 | r_inter1!=f1 );
76.
77. //-----------------judge the lift's storey----------------//
78. always @(posedge clk or negedge reset)
79. begin
80. if (!reset )
81. cnt<=f1;
82. else if (status==0)
83. cnt<=cnt;
84. else if (status==1'b1 &&floor==1'b1)
85. begin
86. if (direction==2'b11)
87. cnt<=cnt+1;
88. else if (direction==0)
89. cnt<=cnt-1;
90. else cnt<=cnt;
![Page 4: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/4.jpg)
91. end
92. else cnt<=cnt;
93. end
94.
95. assign number=cnt;
96.
97. //-----------------the lift's door------------------------//
98. always @(posedge clk or negedge reset )
99. begin
100. if(!reset )
101. door<=1'b0;
102. else if(status==1'b1) //the lift is operating.
103. door<=1'b0;
104. else if(close_door && (status==0 &&floor==1) )
105. door<=1'b0;
106. else if(cnt_time==3'd5 && (status==0 &&floor==1) )
107. door<=1'b0;
108. else if( cnt==f1 && s1==0)
109. door<=1'b0;
110. else if (status==0 && floor==1 /*&& cnt_time==3'd0*/) //the lift is stopping.
111. door<=1'b1;
112. else if (open_door&&(status==1'b0 &&floor==1'b1))
113. door<=1'b1;
114. else door<=door;
115. end
116.
117. always @(posedge clk or negedge reset /*or posedge door*/)
118. begin
119. if(!reset)
120. cnt_time<=3'd0;
![Page 5: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/5.jpg)
121. else if (door==1'b1)
122. cnt_time<=cnt_time+1;
123. else cnt_time<=3'd0;
124. end
125.
126. //------------------the lift control---------------------//
127. always @(posedge clk or negedge reset) //the lift's request ---- the 1st floor
128. begin
129. if(!reset )
130. begin
131. led_up1<=1'b0;
132. r_up1<=2'b11;
133. end
134. else if(up1)
135. begin
136. r_up1<=f1;
137. led_up1<=1'b1;
138. end
139. else if(cnt==s1)
140. begin
141. led_up1<=1'b0;
142. r_up1<=2'b11;
143. end
144. end
145.
146. always @(posedge clk or negedge reset) //the lift's request ----the 2nd floor
147. begin
148. if(!reset )
149. begin
150. led_up2<=1'b0;
![Page 6: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/6.jpg)
151. r_up2<=2'b00;
152. end
153. else if(up2)
154. begin
155. r_up2<=f2;
156. led_up2<=1'b1;
157. end
158. else if(cnt==s2)
159. begin
160. led_up2<=1'b0;
161. r_up2<=2'b00;
162. end
163.
164. end
165.
166. always @(posedge clk or negedge reset) //the lift's request
167. begin
168. if(!reset )
169. begin
170. led_up3<=1'b0;
171. r_up3<=2'b00;
172. end
173. else if (up3)
174. begin
175. r_up3<=f3;
176. led_up3<=1'b1;
177. end
178. else if (cnt==s3)
179. begin
180. led_up3<=1'b0;
![Page 7: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/7.jpg)
181. r_up3<=2'b00;
182. end
183. end
184.
185. always @(posedge clk or negedge reset) //the lift's request
186. begin
187. if(!reset )
188. begin
189. led_down2<=1'b0;
190. r_down2<=2'b00;
191. end
192. else if(down2)
193. begin
194. r_down2<=f2;
195. led_down2<=1'b1;
196. end
197. else if(cnt==s2)
198. begin
199. led_down2<=1'b0;
200. r_down2<=2'b00;
201. end
202. end
203.
204. always @(posedge clk or negedge reset) //the lift's request
205. begin
206. if(!reset )
207. begin
208. led_down3<=1'b0;
209. r_down3<=2'b00;
210. end
![Page 8: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/8.jpg)
211. else if(down3)
212. begin
213. r_down3<=f3;
214. led_down3<=1'b1;
215. end
216. else if(cnt==s3)
217. begin
218. led_down3<=1'b0;
219. r_down3<=2'b00;
220. end
221. end
222.
223. always @(posedge clk or negedge reset) //the lift's request
224. begin
225. if(!reset )
226. begin
227. led_down4<=1'b0;
228. r_down4<=2'b00;
229. end
230. else if(down4)
231. begin
232. r_down4<=f4;
233. led_down4<=1'b1;
234. end
235. else if(cnt==s4)
236. begin
237. led_down4<=1'b0;
238. r_down4<=2'b00;
239. end
240. end
![Page 9: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/9.jpg)
241.
242. always @(posedge clk or negedge reset) //the lift's request
243. begin
244. if(!reset )
245. begin
246. inter1<=1'b0;
247. r_inter1<=2'b11;
248. end
249. else if(inter_button1)
250. begin
251. inter1<=1'b1;
252. r_inter1<=f1;
253. end
254. else if(cnt==s1)
255. begin
256. inter1<=1'b0;
257. r_inter1<=2'b11;
258. end
259. end
260.
261. always @(posedge clk or negedge reset) //the lift's request
262. begin
263. if(!reset )
264. begin
265. inter2<=1'b0;
266. r_inter2<=2'b00;
267. end
268. else if(inter_button2)
269. begin
270. inter2<=1'b1;
![Page 10: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/10.jpg)
271. r_inter2<=f2;
272. end
273. else if(cnt==s2)
274. begin
275. inter2<=1'b0;
276. r_inter2<=2'b00;
277. end
278. end
279.
280. always @(posedge clk or negedge reset) //the lift's request
281. begin
282. if(!reset )
283. begin
284. inter3<=1'b0;
285. r_inter3<=2'b00;
286. end
287. else if(inter_button3)
288. begin
289. inter3<=1'b1;
290. r_inter3<=f3;
291. end
292. else if(cnt==s3)
293. begin
294. inter3<=1'b0;
295. r_inter3<=2'b00;
296. end
297. end
298.
299. always @(posedge clk or negedge reset) //the lift's request
300. begin
![Page 11: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/11.jpg)
301. if(!reset )
302. begin
303. inter4<=1'b0;
304. r_inter4<=2'b00;
305. end
306. else if(inter_button4)
307. begin
308. inter4<=1'b1;
309. r_inter4<=f4;
310. end
311. else if(cnt==s4)
312. begin
313. inter4<=1'b0;
314. r_inter4<=2'b00;
315. end
316. end
317.
318. wire tt = (r_up1==f1|r_up2==f2|r_up3==f3|r_down2==f2|r_down3==f3|r_down4==f4|r_inter2==f2|r_inter3==f3|r_inter4==f4)
;
319.
320. always @ (posedge clk or negedge reset)
321. begin
322. if (!reset)
323. direction<=2'b10;
324. else
325. begin
326. case(cnt)
327. s1:begin
328. if (r_up1==f1|r_up2==f2|r_up3==f3|r_down2==f2|r_down3==f3|r_down4==f4|r_inter2==f2|r_inter3==f3|r_inter4==f4)
329. direction<=2'b11;
![Page 12: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/12.jpg)
330. else direction<=2'b11;
331. end
332. s2:begin
333. if(direction==2'b11)
334. begin
335. if ( r_up2==f2 | r_up3==f3 | r_down4==f4 | r_down3==f3 | r_inter3==f3 | r_inter4==f4 )
336. direction<=2'b11;
337. else if (r_up1==f1 | r_down2==f2 | r_inter1==f1 )
338. direction<=2'b00;
339. end
340. else if(direction==2'b00)
341. begin
342. if(r_up1==f1|r_down2==f2|r_inter1==f1)
343. direction<=2'b00;
344. else if (r_up2==f2 | r_up3==f3 | r_down4==f4 | r_down3==f3 | r_inter3==f3 | r_inter4==f4 )
345. direction<=2'b11;
346. end
347. else direction<=2'b10;
348. end
349. s3:begin
350. if(direction==2'b11)
351. begin
352. if( r_inter4==f4 | r_up3==f3 | r_down4==f4 )
353. direction<=2'b11 ;
354. else if(r_inter1==f1 | r_inter2==f2)
355. direction<=2'b00 ;
356. else if(r_down2==f2|r_up2==f2)
357. direction<=2'b00 ;
358. else if(r_up1==f1)
359. direction<=2'b00 ;
![Page 13: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/13.jpg)
360. end
361.
362. else if(direction==2'b00)
363. begin
364. if ( r_up1==f1 | r_up2==f2 | r_down2==f2 | r_down3==f3 | r_inter1==f1 | r_inter2==f2 )
365. direction<=0;
366. else if ( r_up3==f3 | r_down4==f4 | r_inter4==f4 )
367. direction<=2'b11;
368. end
369. else direction<=2'b10;
370. end
371. s4:begin
372.
if( r_up1==f1 | r_up2==f2 | r_up3==f3 | r_down2==f2 | r_down3==f3 | r_down4==f4 | r_inter1==f1 | r_inter2==f2 | r_inter3==f
3 )
373. direction<=2'b00;
374. else direction<=2'b10;
375. end
376. default:direction<=2'b10;
377. endcase
378. end
379. end
380.
381. always @( posedge clk or negedge reset)
382. begin
383. if (!reset)
384. status<=1'b0;
385. else if ( (floor==0) && (r_up1==f1|r_up2==f2|r_up3==f3|r_down2==f2|r_down3==f3|r_down4==f4|r_inter1==f1|
r_inter2==f2|r_inter3==f3|r_inter4==f4))
386. status<=1'b1;
![Page 14: Verilog Code](https://reader036.fdocuments.in/reader036/viewer/2022082401/5448d836b1af9f686b8b4ad4/html5/thumbnails/14.jpg)
387. else if (floor &&(r_up1!=f1|r_up2!=f2|r_up3!=f3|r_down2!=f2|r_down3!=f3|r_down4!=f4|r_inter1!=f1|r_inter2!=f2|r_inter3!
=f3|r_inter4!=f4))
388. status<=1'b0;
389. else status<=status;
390. end
391.
392. endmodule