Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.98 KB | None | 0 0
  1. `timescale 1ns / 1ps
  2.  
  3. ////////////////////////////////////////////////////////////////////////////////
  4. // Company:
  5. // Engineer:
  6. //
  7. // Create Date: 15:02:01 06/20/2018
  8. // Design Name: zamek
  9. // Module Name: C:/Documents and Settings/student/Pulpit/Nowy folder/Projekt_here/test.v
  10. // Project Name: Projekt_here
  11. // Target Device:
  12. // Tool versions:
  13. // Description:
  14. //
  15. // Verilog Test Fixture created by ISE for module: zamek
  16. //
  17. // Dependencies:
  18. //
  19. // Revision:
  20. // Revision 0.01 - File Created
  21. // Additional Comments:
  22. //
  23. ////////////////////////////////////////////////////////////////////////////////
  24.  
  25. module test;
  26.  
  27. // Inputs
  28. reg K1;
  29. reg K2;
  30. reg K3;
  31. reg K4;
  32. reg RST;
  33. reg CLK;
  34. reg RESET;
  35.  
  36. // Outputs
  37. wire SET;
  38. wire OTW;
  39. wire ALARM;
  40. wire S1_LED;
  41. wire WORK;
  42. wire [5:0] _stan;
  43. wire [2:0] _licznik;
  44.  
  45. // Instantiate the Unit Under Test (UUT)
  46. zamek uut (
  47. .K1(K1),
  48. .K2(K2),
  49. .K3(K3),
  50. .K4(K4),
  51. .RST(RST),
  52. .CLK(CLK),
  53. .RESET(RESET),
  54. .SET(SET),
  55. .OTW(OTW),
  56. .ALARM(ALARM),
  57. .S1_LED(S1_LED),
  58. .WORK(WORK),
  59. ._stan(_stan),
  60. ._licznik(_licznik)
  61. );
  62.  
  63. always #50 CLK=~CLK;
  64.  
  65. initial begin
  66. // Initialize Inputs
  67. K1 = 0;
  68. K2 = 0;
  69. K3 = 0;
  70. K4 = 0;
  71. RST = 0;
  72. CLK = 0;
  73. RESET = 0;
  74.  
  75. // Wait 100 ns for global reset to finish
  76. #200
  77. RST=1;
  78. #100
  79. //przejscie do SET
  80. K1=1;
  81. K4=1;
  82. #100
  83. K1=0;
  84. K4=0;
  85. #100
  86. //ustawianie kodu
  87. K1=1;
  88. #100
  89. K1=0;
  90. #100
  91. K2=1;
  92. #100
  93. K2=0;
  94. #100
  95. K3=1;
  96. #100
  97. K3=0;
  98. #100
  99. K4=1;
  100. #100
  101. K4=0;
  102. #100
  103. K1=1;
  104. #100
  105. K1=0;
  106. #100
  107. K2=1;
  108. #100
  109. K2=0;
  110. #500
  111. //przejscie do wprowadzania kodu
  112. K2=1;
  113. K3=1;
  114. #100
  115. K2=0;
  116. K3=0;
  117. //kod poprawny
  118. #100
  119. K1=1;
  120. #100
  121. K1=0;
  122. #100
  123. K2=1;
  124. #100
  125. K2=0;
  126. #100
  127. K3=1;
  128. #100
  129. K3=0;
  130. #100
  131. K4=1;
  132. #100
  133. K4=0;
  134. #100
  135. K1=1;
  136. #100
  137. K1=0;
  138. #100
  139. K2=1;
  140. #100
  141. K2=0;
  142. //tu OTW
  143. #1000
  144. //powrot do stanu 1
  145. RESET=1;
  146. #100;
  147. RESET=0;
  148. #500
  149. //przejscie do wprowadzania kodu
  150. K2=1;
  151. K3=1;
  152. #200
  153. K2=0;
  154. K3=0;
  155. //1 bledny kod
  156. #300
  157. K2=1;
  158. #100
  159. K2=0;
  160. #100
  161. K2=1;
  162. #100
  163. K2=0;
  164. #100
  165. K3=1;
  166. #100
  167. K3=0;
  168. #100
  169. K4=1;
  170. #100
  171. K4=0;
  172. #100
  173. K1=1;
  174. #100
  175. K1=0;
  176. #100
  177. K2=1;
  178. #100
  179. K2=0;
  180. //2 bledny kod
  181. #300
  182. K2=1;
  183. #100
  184. K2=0;
  185. #100
  186. K2=1;
  187. #100
  188. K2=0;
  189. #100
  190. K3=1;
  191. #100
  192. K3=0;
  193. #100
  194. K4=1;
  195. #100
  196. K4=0;
  197. #100
  198. K1=1;
  199. #100
  200. K1=0;
  201. #100
  202. K2=1;
  203. #100
  204. K2=0;
  205. //3 bledny kod
  206. #300
  207. K2=1;
  208. #100
  209. K2=0;
  210. #100
  211. K2=1;
  212. #100
  213. K2=0;
  214. #100
  215. K3=1;
  216. #100
  217. K3=0;
  218. #100
  219. K4=1;
  220. #100
  221. K4=0;
  222. #100
  223. K1=1;
  224. #100
  225. K1=0;
  226. #100
  227. K2=1;
  228. #100
  229. K2=0;
  230. #1000
  231. RESET=1;
  232. #100;
  233. RESET=0;
  234. end
  235.  
  236. endmodule
  237.  
  238. *************************************
  239.  
  240. `timescale 1ns / 1ps
  241. //////////////////////////////////////////////////////////////////////////////////
  242. // Company:
  243. // Engineer:
  244. //
  245. // Create Date: 14:24:31 06/20/2018
  246. // Design Name:
  247. // Module Name: debouncer
  248. // Project Name:
  249. // Target Devices:
  250. // Tool versions:
  251. // Description:
  252. //
  253. // Dependencies:
  254. //
  255. // Revision:
  256. // Revision 0.01 - File Created
  257. // Additional Comments:
  258. //
  259. //////////////////////////////////////////////////////////////////////////////////
  260. module debouncer(input clk,
  261. input [3:0] PB,
  262. output reg [3:0] BUTTONS
  263. );
  264. reg [3:0] pb_sync;
  265. reg [16:0] cnt;
  266.  
  267. always @(posedge clk)
  268. pb_sync<=PB;
  269.  
  270. wire cnt_max=&cnt;
  271.  
  272. always @(posedge clk)
  273. if(pb_sync==BUTTONS) cnt<=0;
  274. else
  275. begin
  276. cnt<=cnt+1;
  277. if(cnt_max) BUTTONS<=pb_sync;
  278. end
  279.  
  280. endmodule
  281.  
  282. ******************************************************
  283.  
  284. `timescale 1ns / 1ps
  285. //////////////////////////////////////////////////////////////////////////////////
  286. // Company:
  287. // Engineer:
  288. //
  289. // Create Date: 20:33:18 06/18/2018
  290. // Design Name:
  291. // Module Name: zamek
  292. // Project Name:
  293. // Target Devices:
  294. // Tool versions:
  295. // Description:
  296. //
  297. // Dependencies:
  298. //
  299. // Revision:
  300. // Revision 0.01 - File Created
  301. // Additional Comments:
  302. //
  303. //////////////////////////////////////////////////////////////////////////////////
  304. module zamek(
  305. input K1, K2, K3, K4,
  306. input RST,
  307. input CLK,
  308. input RESET,
  309. output reg SET,
  310. output reg OTW,
  311. output reg ALARM,
  312. output reg S1_LED,
  313. output reg WORK,
  314. output [5:0] _stan,
  315. output [2:0] _licznik
  316. );
  317.  
  318. integer LICZNIK=0;
  319. //assign LICZNIK=0;
  320. reg [5:0] stan;
  321.  
  322. reg [2:0] set_k1;
  323. reg [2:0] set_k2;
  324. reg [2:0] set_k3;
  325. reg [2:0] set_k4;
  326. reg [2:0] set_k5;
  327. reg [2:0] set_k6;
  328.  
  329. reg [2:0] work_k1;
  330. reg [2:0] work_k2;
  331. reg [2:0] work_k3;
  332. reg [2:0] work_k4;
  333. reg [2:0] work_k5;
  334. reg [2:0] work_k6;
  335.  
  336. wire [2:0] k1;
  337. wire [2:0] k2;
  338. wire [2:0] k3;
  339. wire [2:0] k4;
  340.  
  341. debouncer db1(.clk(CLK),.PB({K1,K2,K3,K4}),.BUTTONS({k1,k2,k3,k4}));
  342. always@(posedge CLK)
  343.  
  344. if(~RST) begin stan<=1; SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=0; end
  345. else
  346. begin
  347. case(stan)
  348. 1: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=1; WORK<=0;
  349. if(K1&&K4) stan<=2;
  350. else if(K2&&K3) stan<=9;
  351. end
  352.  
  353. 2: begin SET<=1; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=0;
  354. if(K1) begin set_k1<=3'd1; stan<=3; end
  355. else if(K2) begin set_k1<=3'd2; stan<=3; end
  356. else if(K3) begin set_k1<=3'd3; stan<=3; end
  357. else if(K4) begin set_k1<=3'd4; stan<=3; end
  358. end
  359.  
  360. 3: begin SET<=1; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=0;
  361. if(K1) begin set_k2<=3'd1; stan<=4; end
  362. else if(K2) begin set_k2<=3'd2; stan<=4; end
  363. else if(K3) begin set_k2<=3'd3; stan<=4; end
  364. else if(K4) begin set_k2<=3'd4; stan<=4; end
  365. end
  366.  
  367. 4: begin SET<=1; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=0;
  368. if(K1) begin set_k3<=3'd1; stan<=5; end
  369. else if(K2) begin set_k3<=3'd2; stan<=5; end
  370. else if(K3) begin set_k3<=3'd3; stan<=5; end
  371. else if(K4) begin set_k3<=3'd4; stan<=5; end
  372. end
  373.  
  374. 5: begin SET<=1; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=0;
  375. if(K1) begin set_k4<=3'd1; stan<=6; end
  376. else if(K2) begin set_k4<=3'd2; stan<=6; end
  377. else if(K3) begin set_k4<=3'd3; stan<=6; end
  378. else if(K4) begin set_k4<=3'd4; stan<=6; end
  379. end
  380.  
  381. 6: begin SET<=1; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=0;
  382. if(K1) begin set_k5<=3'd1; stan<=7; end
  383. else if(K2)begin set_k5<=3'd2; stan<=7; end
  384. else if(K3) begin set_k5<=3'd3; stan<=7; end
  385. else if(K4) begin set_k5<=3'd4; stan<=7; end
  386. end
  387.  
  388. 7: begin SET<=1; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=0;
  389. if(K1) begin set_k6<=3'd1; stan<=8; end
  390. else if(K2) begin set_k6<=3'd2; stan<=8; end
  391. else if(K3)begin set_k6<=3'd3; stan<=8; end
  392. else if(K4) begin set_k6<=3'd4; stan<=8; end
  393. end
  394.  
  395. 8: begin SET<=1; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=0;
  396. stan<=1;
  397. end
  398.  
  399. 9: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=1;
  400. if(K1) begin work_k1<=3'd1; stan<=10; end
  401. else if(K2) begin work_k1<=3'd2; stan<=10; end
  402. else if(K3) begin work_k1<=3'd3; stan<=10; end
  403. else if(K4) begin work_k1<=3'd4; stan<=10; end
  404. end
  405.  
  406. 10: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=1;
  407. if(K1) begin work_k2<=3'd1; stan<=11; end
  408. else if(K2) begin work_k2<=3'd2; stan<=11; end
  409. else if(K3) begin work_k2<=3'd3; stan<=11; end
  410. else if(K4) begin work_k2<=3'd4; stan<=11; end
  411. end
  412.  
  413. 11: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=1;
  414. if(K1) begin work_k3<=3'd1; stan<=12; end
  415. else if(K2) begin work_k3<=3'd2; stan<=12; end
  416. else if(K3) begin work_k3<=3'd3; stan<=12; end
  417. else if(K4) begin work_k3<=3'd4; stan<=12; end
  418. end
  419.  
  420. 12: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=1;
  421. if(K1) begin work_k4<=3'd1; stan<=13; end
  422. else if(K2) begin work_k4<=3'd2; stan<=13; end
  423. else if(K3) begin work_k4<=3'd3; stan<=13; end
  424. else if(K4) begin work_k4<=3'd4; stan<=13; end
  425. end
  426.  
  427. 13: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=1;
  428. if(K1) begin work_k5<=3'd1; stan<=14; end
  429. else if(K2) begin work_k5<=3'd2; stan<=14; end
  430. else if(K3) begin work_k5<=3'd3; stan<=14; end
  431. else if(K4) begin work_k5<=3'd4; stan<=14; end
  432. end
  433.  
  434. 14: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=1;
  435. if(K1) begin work_k6<=3'd1; stan<=15; end
  436. else if(K2) begin work_k6<=3'd2; stan<=15; end
  437. else if(K3) begin work_k6<=3'd3; stan<=15; end
  438. else if(K4) begin work_k6<=3'd4; stan<=15; end
  439. end
  440.  
  441. 15: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=1;
  442. if(set_k1==work_k1&&set_k2==work_k2&&set_k3==work_k3&&set_k4==work_k4&&set_k5&&work_k5&&set_k6==work_k6) stan<=16;
  443. else begin LICZNIK=LICZNIK+1; stan<=17; end
  444. end
  445.  
  446. 16: begin SET<=0; OTW<=1; ALARM<=0; S1_LED<=0; WORK<=0;
  447. if(RESET) stan<=1;
  448. end
  449.  
  450. 17: begin SET<=0; OTW<=0; ALARM<=0; S1_LED<=0; WORK<=1;
  451. if(LICZNIK<3) stan<=9;
  452. else if(LICZNIK==3) begin LICZNIK=0; stan<=18; end
  453. end
  454.  
  455. 18: begin SET<=0; OTW<=0; ALARM<=1; S1_LED<=0; WORK<=0;
  456. if(RESET) stan<=1;
  457. end
  458. endcase
  459. end
  460. assign _stan=stan;
  461. assign _licznik=LICZNIK;
  462.  
  463. endmodule
  464.  
  465. *******************************************
  466.  
  467. NET "K4" LOC = "T16" | IOSTANDARD = LVTTL | PULLDOWN ;
  468. NET "K3" LOC = "T14" | IOSTANDARD = LVTTL | PULLDOWN ;
  469. NET "K2" LOC = "T15" | IOSTANDARD = LVTTL | PULLDOWN ;
  470. NET "K1" LOC = "U15" | IOSTANDARD = LVTTL | PULLDOWN ;
  471.  
  472. NET "RST" LOC = "V8" | IOSTANDARD = LVTTL | PULLUP ;
  473. NET "RESET" LOC = "U10"| IOSTANDARD = LVTTL | PULLUP ;
  474. NET "N" LOC = "T9" | IOSTANDARD = LVTTL | PULLUP ;
  475. NET "CLK" LOC = "E12"| IOSTANDARD = LVCMOS33 ;
  476.  
  477.  
  478. NET "ALARM" LOC = "V19" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ;
  479. NET "OTW" LOC = "U19" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ;
  480. NET "SET" LOC = "U20" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ;
  481. NET "WORK" LOC = "T19" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ;
  482. NET "S1_LED" LOC = "R20" | IOSTANDARD = LVTTL | SLEW = QUIETIO | DRIVE = 4 ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement