EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——从零开始学FPGA——by ihalin——按键控制LED灯
$ \/ V0 q# ?8 m在两三个月前粗略看了一遍夏宇闻的《verilog数字系统设计》,现在都忘记了好多,暑假留校开始努力学FPGA咬咬牙狠心花了一个好几百大洋(出了血本)买了一块FPGA开发板。现在坚持多学点东西,不然毕业回家就种田了。刚刚做了第一个实验:按键控制led1 N! C: t8 e- `
用了一个二选一多路选择器实现4 B( n) m' T5 N7 P0 d$ ]7 ~; U
当如果key是低电平则led输出的电瓶高低和a端的电瓶高低一样反之和b相同
6 @; O9 {3 C. J7 H5 x& U用了一个连续赋值语句实现 1. module led(a,b,key,led_out); 2. 3. input a;//輸入端口a 4. input b;//輸入端口b 5. input key;//輸入端口key 選擇 6. 7. output led_out;//輸出端口led_out 8. 9. assign led_out = (key == 0) ? a : b; 10. 11. endmodule 连续赋值语句assign:连续赋值语句只能用来对线网型变量进行赋值,而不能对寄存器变量进行赋值+ k z8 b$ l! o8 v
input和output信号的类型默认是wire信号的
# g- Z7 ^) G! _4 Q' Z
2 Q6 n* f1 J+ X& N1 K
' L9 w9 n: L" e* l1 Q$ x1 \0 Q% U5 H! z! `# M- N5 k9 n
然后写了一个testbench 1. `timescale 1ns/1ps//前面是仿真步进,后面是仿真精度 #100*1ns #100.1 精度 2. module led_tb;//测试模块 3. //激勵信號 4. reg signed_a;//信号激励源 5. reg signed_b; 6. reg signed_c;//key 7. 8. wire ledl; 9. led led0( 10. .a(signed_a), 11. .b(signed_b), 12. .key(signed_c), 13. .led_out(ledl) 14. );//模块例化 15. initial begin 16. signed_a = 0;signed_b = 0;signed_c = 0; 17. #100;//延時100ns 18. signed_a = 0;signed_b = 0;signed_c = 1; 19. #100; 20. signed_a = 0;signed_b = 1;signed_c = 0; 21. #100; 22. signed_a = 0;signed_b = 1;signed_c = 1; 23. #100; 24. signed_a = 1;signed_b = 0;signed_c = 0; 25. #100; 26. signed_a = 1;signed_b = 0;signed_c = 1; 27. #100; 28. signed_a = 1;signed_b = 1;signed_c = 0; 29. #100; 30. signed_a = 1;signed_b = 1;signed_c = 1; 31. #200; 32. $stop; 33. end 34. 35. endmodule 然后开始RTL仿真,符合设计初衷1 I3 K. ^- a, |5 Q0 Y
) E( E" O. x. q. `然后进行门3 N; F& P0 {1 ?# t7 q
/ G' i+ A% s, e# P* @* Q
9 f% J7 G' J( J$ g0 Q* j7 z4 i$ Q发现和RTL仿真的波形居然会不一样。现在还不知道为什么,怎么去避免。4 [4 r: d7 O- M8 G# o
然后我分配了引脚下载到开发板上了 |" g) Y% n4 o: D; ^" }8 }' a: G
7 g; r3 h6 m( @6 S+ Y0 r
a接gnd
' Y y' B8 g+ Q9 Ub接vcc
" W8 d7 q. n6 T( U
6 |: g+ K+ d. C, c
a接vcc
. P# O: I- t# i/ Mb接gnd: Y0 ]# j' n, d- _, e# D
$ g1 M; F! Q& o7 P6 T
# W7 m' n8 H( B
做完了第一个实验 0 }. l/ J! }8 L2 c6 c1 b5 k
1 ]! A/ f/ `1 d& i7 W: |8 U
' p/ i" o$ |: @2 I/ k$ |; T$ a# ^ |