找回密码
 注册
关于网站域名变更的通知
查看: 317|回复: 1
打印 上一主题 下一主题

转——从零开始学FPGA——by ihalin——按键控制LED灯

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-1 11:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——从零开始学FPGA——by ihalin——按键控制LED灯
, G* k- o/ ~5 P+ [8 ^
在两三个月前粗略看了一遍夏宇闻的《verilog数字系统设计》,现在都忘记了好多,暑假留校开始努力学FPGA咬咬牙狠心花了一个好几百大洋(出了血本)买了一块FPGA开发板。现在坚持多学点东西,不然毕业回家就种田了。刚刚做了第一个实验:按键控制led
0 m. F' ?; l* j* M( S3 y/ _
用了一个二选一多路选择器实现
/ Y/ y/ R4 r4 A% w
当如果key是低电平则led输出的电瓶高低和a端的电瓶高低一样反之和b相同& c3 l! s' O/ u8 A) i' e3 ?
用了一个连续赋值语句实现
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:连续赋值语句只能用来对线网型变量进行赋值,而不能对寄存器变量进行赋值3 n# b, n2 ]+ R1 t+ f+ y+ d
input和output信号的类型默认是wire信号的
9 T7 X- R! N7 K. }; ?
( z7 r2 p7 Q$ h  i/ @! W

' j: F) U9 U) U, l, t

% R7 A2 |0 s- B4 I+ k
然后写了一个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仿真,符合设计初衷& ^, c' o0 \: T: x$ Q

0 a9 U8 B- ~  p6 P7 h
然后进行门
+ |3 R( c3 X6 }5 [

. E/ ~, J, r4 e

5 q7 I% y* k. }6 F+ K
发现和RTL仿真的波形居然会不一样。现在还不知道为什么,怎么去避免。9 o2 r! i$ q9 D0 }1 ]% }
然后我分配了引脚下载到开发板上了+ H0 {' R1 P% a
# w9 v# D0 @$ o
a接gnd; Z/ J" K0 E: N5 L
b接vcc, T' s+ h/ k7 ?, L9 |

* l, k1 A3 z, I5 Q2 x' B
a接vcc
9 T( q, G7 ?" P+ d) p* I% f% m
b接gnd( K, |; @3 U/ }) K0 ]1 V

, q+ A# f: Y+ V: v- I' w

% H& s/ q! r7 D4 i& s. t
做完了第一个实验
* s; @5 L# N) b
2 |) \; ^; H5 {  P

- V/ E, I7 F* T1 s7 z( t

该用户从未签到

2#
发表于 2019-4-1 16:37 | 只看该作者
发帖是心得 回帖是美德
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-30 14:33 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表