EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——从零开始学FPGA——by ihalin——按键控制LED灯
* |) {* ^: W) c# W4 M2 ~在两三个月前粗略看了一遍夏宇闻的《verilog数字系统设计》,现在都忘记了好多,暑假留校开始努力学FPGA咬咬牙狠心花了一个好几百大洋(出了血本)买了一块FPGA开发板。现在坚持多学点东西,不然毕业回家就种田了。刚刚做了第一个实验:按键控制led
1 Y) h6 t( n6 c/ p用了一个二选一多路选择器实现
) M5 w' }% r2 w P6 c/ \$ t7 Q当如果key是低电平则led输出的电瓶高低和a端的电瓶高低一样反之和b相同* }$ T1 G0 h# v& U! a7 i5 Y& z" O
用了一个连续赋值语句实现 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:连续赋值语句只能用来对线网型变量进行赋值,而不能对寄存器变量进行赋值, i; F, X5 _6 E, O
input和output信号的类型默认是wire信号的3 E0 Q7 F3 @ ^& O! S; I8 l
% d0 E0 B- m; c" d5 X$ h- ^8 ~$ n
7 u9 N/ e, i7 ^ O9 K, R `: }8 s
然后写了一个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仿真,符合设计初衷
z' h& i1 c' H5 E0 u% h$ Z% d& M
% S- j5 U+ _' S! I. N* _
然后进行门5 d7 h! _% E3 d9 |9 a5 `
9 N! R0 G; [7 D' y' N
, C0 K+ n" \# D3 T: ?: a9 `! S发现和RTL仿真的波形居然会不一样。现在还不知道为什么,怎么去避免。' V d. G2 [. i& K! |# x
然后我分配了引脚下载到开发板上了
, z" Q3 X5 T# A, H+ q( l4 T
) H, Y- O# e; Y P( fa接gnd
6 @' ^5 R$ Y0 @9 x3 bb接vcc& d- |0 m* D6 Q" f
, h& W0 X. T- ?a接vcc' m8 Q7 x$ b* m( y
b接gnd
6 M5 M* W* K5 e& o
! V9 M8 S$ G8 C; p
- z% E; z. x. M5 b* r9 I' R
做完了第一个实验
0 i' D7 s* s! L3 B8 C/ v/ e; u* M2 e& @" v
, [ d' L: j8 X5 b2 K8 q
|