开发流程
- 设计定义
- 设计输入
- 分析和综合
- 功能仿真 (modelsim-altera)
- 布局布线
- 时序仿真 (modelsim-altera)
- IO分配以及配置文件生成
- 配置(烧写FPGA)
- 在线调试
二选一多路器
两个输入IO,a,b。可以是高电平,也可以是低电平,输入案件按下时候,LED灯与a端口状态保持一致,输入按键释放时,LED灯与b端口状态保持一致。
代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 module led_test(a,b,key_in,led_out);
input a; //输入端口A
input b; //输入端口B
input key_in; //按键输入
output led_out; //led输出端口
//逻辑设计
//当key_in == 0, led_out = a
assign led_out = (key_in == 0)?a:b;
endmodule
仿真代码如下:
`timescale 1ns/1ps
module led_test_tb;
reg signal_a;
reg signal_b;
reg signal_c;
wire led;
led_test led_test0(
.a(signal_a),
.b(signal_b),
.key_in(signal_c),
.led_out(led)
);
initial begin
signal_a=0; signal_b=0; signal_c=0;
#100;
signal_a=0; signal_b=0; signal_c=1;
#100;
signal_a=0; signal_b=1; signal_c=0;
#100;
signal_a=0; signal_b=1; signal_c=1;
#100;
signal_a=1; signal_b=0; signal_c=0;
#100;
signal_a=1; signal_b=0; signal_c=1;
#100;
signal_a=1; signal_b=1; signal_c=0;
#100;
signal_a=1; signal_b=1; signal_c=1;
#200;
$stop;
end
endmodule
译码器
译码器有很多种类,例如3-8译码器,或者4-16译码器。
所谓3-8译码器指的是具有有三个输入端,能够通过三个输入端传递进来的信号输出相应位置的数值的一类器件。
1 | module my3_8(a,b,c,out); |
1 | `timescale 1ns/1ns |
计数器
LED每500ms,状态反转一次,系统时钟为50M,对应周期为20ns,那么需要对系统时钟进行计数。
手写计数器
1 | module counter(Clk50M,Rst_n,led); |
1 | `timescale 1ns/1ns |
QuartII 提供的LPM——counterIP 核的使用
FPGA中的设计方式主要有三种,第一种是原理图的设计方式,第二种是利用硬件描述语言的设计方式,第三种是IP核的输入方式。所谓IP核的输入方式就是。