Advertisement
Guest User

Bai Thi

a guest
Dec 16th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module Bai1(input CLOCK_50, input SW, output [0:6] HEX0);
  2. reg [24:0] dem;
  3. reg [8:0] a;
  4.  
  5. always @(posedge CLOCK_50)
  6. dem=dem+1'b1;
  7.  
  8. always @(posedge dem[24])
  9. if (SW==1'b1) a=a+1'b1;
  10. else if (a==1'b0)
  11. begin
  12. a=8'd100;
  13. a=a-1'b1;
  14. end
  15. else a=a-1'b1;
  16.  
  17. assign HEX0= (a%10==8'd0)? 8'd1:
  18. (a%10==8'd1)? 8'd79:
  19. (a%10==8'd2)? 8'd18:
  20. (a%10==8'd3)? 8'd6:
  21. (a%10==8'd4)? 8'd76:
  22. (a%10==8'd5)? 8'd36:
  23. (a%10==8'd6)? 8'd32:
  24. (a%10==8'd7)? 8'd15:
  25. (a%10==8'd8)? 8'd0: 8'd4;
  26.  
  27.  
  28. endmodule
  29.  
  30. //===============================
  31.  
  32. module HA (a,b,s,co);
  33. input a,b;
  34. output s,co;
  35. assign s=a^b;
  36. assign co=a&b;
  37. endmodule
  38.  
  39. module FA (a,b,ci,s,co);
  40. input a,b,ci;
  41. output s,co;
  42. assign s=(a^b)^ci;
  43. assign co=(a&b)|(a&ci)|(b&ci);
  44. endmodule
  45.  
  46. module Bai2(a,b,s,hex0,hex1);
  47. input [3:0] a,b;
  48. output [4:0] s;
  49. output [0:6] hex0;
  50. output [0:6] hex1;
  51. wire c1,c2,c3;
  52.  
  53. HA u0 (.a(a[0]),.b(b[0]),.s(s[0]),.co(c1));
  54. FA u1 (.a(a[1]),.b(b[1]),.ci(c1),.s(s[1]),.co(c2));
  55. FA u2 (.a(a[2]),.b(b[2]),.ci(c2),.s(s[2]),.co(c3));
  56. FA u3 (.a(a[3]),.b(b[3]),.ci(c3),.s(s[3]),.co(s[4]));
  57.  
  58. wire [3:0] dv,ch;
  59. assign dv=s%10;
  60. assign ch=s/10;
  61.  
  62. assign hex0= (dv==0)? 1:
  63. (dv==1)? 79:
  64. (dv==2)? 18:
  65. (dv==3)? 6:
  66. (dv==4)? 76:
  67. (dv==5)? 36:
  68. (dv==6)? 32:
  69. (dv==7)? 15:
  70. (dv==8)? 0: 4;
  71.  
  72. assign hex1= (ch==0)? 1:
  73. (ch==1)? 79:
  74. (ch==2)? 18:
  75. (ch==3)? 6:
  76. (ch==4)? 76:
  77. (ch==5)? 36:
  78. (ch==6)? 32:
  79. (ch==7)? 15:
  80. (ch==8)? 0: 4;
  81.  
  82. endmodule
  83.  
  84. //========================================
  85.  
  86. module Bai3 (CLOCK_50, LEDG);
  87. input CLOCK_50;
  88. output reg [7:0] LEDG;
  89. reg [24:0] dem;
  90. reg [1:0] flag;
  91.  
  92. always @(posedge CLOCK_50)
  93. dem=dem+1'b1;
  94.  
  95. always @(posedge dem[23])
  96. if (LEDG==8'd0) LEDG=8'd2;
  97. else if (flag==2'b0)
  98. begin
  99. LEDG={LEDG[6:0],LEDG[7]};   // DICH TRAI
  100. if (LEDG[7]==2'b1) flag=2'b1;
  101. end
  102. else
  103. begin
  104. LEDG={LEDG[0],LEDG[7:1]};    //DICH PHAI
  105. if (LEDG[0]==2'b1) flag=2'b0;
  106. end
  107.  
  108. endmodule
  109.  
  110. //==========================================
  111. module Bai5 (input CLOCK_50, output reg [7:0] LEDG);
  112.  
  113. reg [24:0] dem;
  114.  
  115. always @(posedge CLOCK_50)
  116. dem=dem+1'b1;
  117.  
  118. always @(posedge dem[24])
  119. if (LEDG==8'd0) LEDG=8'd129;
  120. else LEDG={LEDG[4],LEDG[7:5],LEDG[2:0],LEDG[3]};
  121.  
  122. endmodule
  123.  
  124.  
  125. //=========================================
  126.  
  127. module Bai6(input CLOCK_50, input [1:0] SW, output reg [0:6] HEX0, HEX1, HEX2, HEX3, HEX4);
  128. reg [24:0] dem;
  129. reg [1:0] flag;
  130. reg [6:0] speed;
  131.  
  132. always @(posedge CLOCK_50)
  133. dem=dem+1'b1;
  134.  
  135. always @(posedge dem[speed])
  136. begin
  137. if (SW==2'b0)
  138. begin
  139. speed = 6'd24;
  140. if (flag==2'b0)
  141. begin
  142. HEX4=8'd72;
  143. HEX3=8'd48;
  144. HEX2=8'd113;
  145. HEX1=8'd113;
  146. HEX0=8'd1;
  147. flag=2'b1;
  148. end
  149.  
  150. else
  151. begin
  152. HEX4=8'd255;
  153. HEX3=8'd255;
  154. HEX2=8'd255;
  155. HEX1=8'd255;
  156. HEX0=8'd255;
  157. flag=2'b0;
  158. end
  159. end
  160.  
  161. else if (SW==2'b1)
  162. begin
  163. speed = 6'd23;
  164. if (flag==2'b0)
  165. begin
  166. HEX4=8'd72;
  167. HEX3=8'd48;
  168. HEX2=8'd113;
  169. HEX1=8'd113;
  170. HEX0=8'd1;
  171. flag=2'b1;
  172. end
  173.  
  174. else
  175. begin
  176. HEX4=8'd255;
  177. HEX3=8'd255;
  178. HEX2=8'd255;
  179. HEX1=8'd255;
  180. HEX0=8'd255;
  181. flag=2'b0;
  182. end
  183. end
  184.  
  185. else if (SW==2'b10)
  186. begin
  187. speed = 6'd22;
  188. if (flag==2'b0)
  189. begin
  190. HEX4=8'd72;
  191. HEX3=8'd48;
  192. HEX2=8'd113;
  193. HEX1=8'd113;
  194. HEX0=8'd1;
  195. flag=2'b1;
  196. end
  197.  
  198. else
  199. begin
  200. HEX4=8'd255;
  201. HEX3=8'd255;
  202. HEX2=8'd255;
  203. HEX1=8'd255;
  204. HEX0=8'd255;
  205. flag=2'b0;
  206. end
  207. end
  208.  
  209. else if (SW==2'b11)
  210. begin
  211. speed = 6'd21;
  212. if (flag==2'b0)
  213. begin
  214. HEX4=8'd72;
  215. HEX3=8'd48;
  216. HEX2=8'd113;
  217. HEX1=8'd113;
  218. HEX0=8'd1;
  219. flag=2'b1;
  220. end
  221.  
  222. else
  223. begin
  224. HEX4=8'd255;
  225. HEX3=8'd255;
  226. HEX2=8'd255;
  227. HEX1=8'd255;
  228. HEX0=8'd255;
  229. flag=2'b0;
  230. end
  231. end
  232. end
  233.  
  234.  
  235. endmodule
  236.  
  237. //============================================
  238.  
  239.  
  240. module Bai7(input [8:0] sw, output [0:6] hex0, hex1, hex2,tr,ch,dv);
  241.  
  242. assign tr=sw/8'd100;
  243. assign ch=(sw/8'd10)%8'd10;
  244. assign dv = sw%8'd10;
  245.  
  246. assign hex0= (dv==8'd0)? 8'd1:
  247. (dv==8'd1)? 8'd79:
  248. (dv==8'd2)? 8'd18:
  249. (dv==8'd3)? 8'd6:
  250. (dv==8'd4)? 8'd76:
  251. (dv==8'd5)? 8'd36:
  252. (dv==8'd6)? 8'd32:
  253. (dv==8'd7)? 8'd15:
  254. (dv==8'd8)? 8'd0:
  255. (dv==8'd9)? 8'd4:8'd255;
  256.  
  257. assign hex1= (ch==8'd0)? 8'd1:
  258. (ch==8'd1)? 8'd79:
  259. (ch==8'd2)? 8'd18:
  260. (ch==8'd3)? 8'd6:
  261. (ch==8'd4)? 8'd76:
  262. (ch==8'd5)? 8'd36:
  263. (ch==8'd6)? 8'd32:
  264. (ch==8'd7)? 8'd15:
  265. (ch==8'd8)? 8'd0:
  266. (ch==8'd9)? 8'd4:8'd255;
  267.  
  268. assign hex2= (tr==8'd0)? 8'd1:
  269. (tr==8'd1)? 8'd79:
  270. (tr==8'd2)? 8'd18:
  271. (tr==8'd3)? 8'd6:
  272. (tr==8'd4)? 8'd76:
  273. (tr==8'd5)? 8'd36:
  274. (tr==8'd6)? 8'd32:
  275. (tr==8'd7)? 8'd15:
  276. (tr==8'd8)? 8'd0:
  277. (tr==8'd9)? 8'd4:8'd255;
  278.  
  279. endmodule
  280.  
  281.  
  282.  
  283. //=================================
  284.  
  285. module Bai8(input CLOCK_50, output reg [0:6] hex0, hex1, hex2,c);
  286.  
  287. reg [24:0] dem;
  288.  
  289. always @(posedge CLOCK_50)
  290. dem=dem+1;
  291.  
  292. always @(posedge dem[24])
  293. if (c==0)
  294. begin
  295. hex2=79;
  296. hex1=255;
  297. hex0=72;
  298. c=1;
  299. end
  300. else if (c==1)
  301. begin
  302. hex2=72;
  303. hex1=79;
  304. hex0=255;
  305. c=2;
  306. end
  307. else
  308. begin
  309. hex2=255;
  310. hex1=72;
  311. hex0=79;
  312. c=0;
  313. end
  314.  
  315. endmodule
  316.  
  317.  
  318.  
  319. //=================================
  320.  
  321. module Bai9 (input CLOCK_50, output reg [7:0] LEDR);
  322.  
  323. reg [24:0] dem;
  324. reg [1:0] flag;
  325.  
  326. always @(posedge CLOCK_50)
  327. dem=dem+1'b1;
  328.  
  329. always @(posedge dem[22])
  330. if (flag==2'b0)
  331. begin
  332. LEDR={~LEDR[0],LEDR[7:1]};
  333. if (LEDR==8'd255) flag=2'b1;
  334. end
  335. else
  336. begin
  337. LEDR={LEDR[6:0],~LEDR[7]};
  338. if (LEDR==8'd0) flag=2'b0;
  339. end
  340.  
  341. endmodule
  342. //==================================
  343.  
  344.  
  345. module Bai10(sw, hex0, hex1, hex2,a,tr,ch,dv);
  346. input [3:0] sw;
  347. output [0:6] hex0,hex1,hex2,tr,ch,dv;
  348. output [0:7] a;
  349.  
  350. assign a=sw;
  351. assign tr=(a*a)/7'd100;
  352. assign ch=((a*a)/7'd10)%7'd10;
  353. assign dv = (a*a)%7'd10;
  354.  
  355. assign hex0= (dv==8'd0)? 8'd1:
  356. (dv==8'd1)? 8'd79:
  357. (dv==8'd2)? 8'd18:
  358. (dv==8'd3)? 8'd6:
  359. (dv==8'd4)? 8'd76:
  360. (dv==8'd5)? 8'd36:
  361. (dv==8'd6)? 8'd32:
  362. (dv==8'd7)? 8'd15:
  363. (dv==8'd8)? 8'd0:
  364. (dv==8'd9)? 8'd4:8'd255;
  365.  
  366. assign hex1= (ch==8'd0)? 8'd1:
  367. (ch==8'd1)? 8'd79:
  368. (ch==8'd2)? 8'd18:
  369. (ch==8'd3)? 8'd6:
  370. (ch==8'd4)? 8'd76:
  371. (ch==8'd5)? 8'd36:
  372. (ch==8'd6)? 8'd32:
  373. (ch==8'd7)? 8'd15:
  374. (ch==8'd8)? 8'd0:
  375. (ch==8'd9)? 8'd4:8'd255;
  376.  
  377. assign hex2= (tr==8'd0)? 8'd1:
  378. (tr==8'd1)? 8'd79:
  379. (tr==8'd2)? 8'd18:
  380. (tr==8'd3)? 8'd6:
  381. (tr==8'd4)? 8'd76:
  382. (tr==8'd5)? 8'd36:
  383. (tr==8'd6)? 8'd32:
  384. (tr==8'd7)? 8'd15:
  385. (tr==8'd8)? 8'd0:
  386. (tr==8'd9)? 8'd4:8'd255;
  387.  
  388. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement