FPGA 电路开发入门实验

FPGA 电路开发入门实验

0章:基础知识

如图1,本实验使用实验板为altera DE0,板子型号为Cyclone Ⅲ, EP3C16F484C6,编译软件为QuartusⅡ9.0。


图 1 Quartus实验板设置

0.1 常用管脚

实验板中常用管脚有50MHz时钟、拨码开关、按钮、LED和八段数码管等。

表格 1 时钟、拨码开关、按钮、LED管脚分布

功能

管脚

板上位置

50MHz时钟

G21

B12

拨码开关

J6

sw0

H5

sw1

H6

sw2

G4

sw3

G5

sw4

J7

sw5

H7

sw6

E3

sw7

E4

sw8

D2

sw9

按钮

H2

button0

G3

button1

F1

button2

LED

J1

LEDG0

J2

LEDG1

J3

LEDG2

H1

LEDG3

F2

LEDG4

E1

LEDG5

C1

LEDG6

C2

LEDG7

B2

LEDG8

B1

LEDG9

 

图 2 数码管管脚

0.2 signaltap介绍

SignalTap是由Altera公司开发的一个在线、片内信号分析的工具,为设计开发者验证所用。

用到signaltap的情况是当代码经过仿真没有问题,但加载到FPGA电路板后,发现功能不正确时,可以用signalTap工具进行分析,它的作用就类似于一个数字逻辑分析仪。利用signaltap基本上可以代替数字逻辑分析仪了,它是quartus里最常用的工具,必须熟练使用工具。

0.2.1 触发的概念

以模拟示波器为例,说明触发的概念。

(1)示波器的同步

要明白触发的概念,首先要了解示波器同步的概念。那么什么是示波器的同步呢?我们这里所说的示波器同步是指示波器的扫描信号与被观测的信号同步,也就是说它们的频率之间存在着整数倍的关系。

先了解一下示波器的工作原理。我们知道,示波器是通过在XY偏转板上加上控制电压,控制由电子枪射出电子束的偏转从而在屏幕上描绘出轨迹的,一般在X偏转板加的是正向锯齿波信号,线性上升的电压控制电子束从左到右移动,形成水平扫描。因为上升的电压与时间成线性关系,扫描得到的轨迹就可以模拟时间轴。如果同时在Y偏转板加上与被测信号成比例的电压,使电子束在水平移动的同时也在垂直方向移动,这样电子束就描绘出了被测信号与时间的关系,也就是信号的波形。这是示波器显示波形的基本原理。

Y是一周期性信号,X是扫描信号,显然它们是不同步的。显然它们在屏幕上的位置都不同,而且先后出现,所以看到的是它们的混合,得不到一个稳定的波形。这就是示波器的扫描与信号不同步的结果。

如果设法将X信号变成使每一次扫描开始时刻都对应于Y信号一个周期的同一点,使得每一次扫描对应的Y信号都相同,也就是让示波器的扫描信号与被测信号同步。当将这样的信号同时分别加到示波器的XY偏转系统时,由于每一个扫描周期XY的信号都相同,电子束受到同样的偏转控制,因而每一次扫描的电子束都打在屏幕上的同样的轨迹上。这是能看到的唯一波形,因为每一个扫描周期电子束都打在这个波形的轨迹上,而不是其他位置,因而这个波形是稳定的。这就是示波器扫描与信号同步的结果。

综上所述,如果要在示波器的屏幕上观察到稳定的波形,必要的条件是示波器的扫描信号要与被观察的信号保持同步关系。

那么,怎样才能使示波器的扫描信号与被观测信号保持同步关系呢?

(2)触发的作用

为了使扫描信号与被测信号同步,可以设定一些条件,将被测信号不断地与这些条件相比较,只有当被测信号满足这些条件时才启动扫描,从而使得扫描的频率与被测信号相同或存在整数倍的关系,也就是同步。这种技术我们就称为触发,而这些条件我们称其为触发条件

用作触发条件的形式很多,最常用最基本的就是边沿触发,即将被测信号的变化(即信号上升或下降的边沿)与某一电平相比较,当信号的变化以某种选定的方式达到这一电平时,产生一个触发信号,启动一次扫描。可以将触发电平选在0V,当被测信号从低到高跨越这个电平时,就产生一次扫描,这样就得到了与被测信号同步的扫描信号。其他的触发条件有脉宽触发斜率触发状态触发等等,这些触发条件通常会在比较高档的示波器中出现。

0.2.2 SignalTapII原理

在使用signalTap前,先理解一下SignalTap的原理,这样就助于理解每个参数。

想观察一组信号,称之为被测信号(可以是多个),同时指定一个采样时钟。

想看这个被测信号,在其下降沿前后几个时钟内,被测信号的值是多少。那么下降沿就是触发条件。

当满足触发条件时,signaltap会将触发条件前后,时钟上升沿时的所有信号值保存到一个RAM当中。

可以指定触发条件前后采多少个样点。如果RAM比较大,那么可以保存的数据就比较多。如果RAM比较小,那么保存的数据自然少。(因此RAM大小决定了观察数据的多少)。

SignalTap将数据保存到RAM后,将读出RAM中的数据,然后逐个在显示器中显示出来(因此SignalTap看到的都是理想的,没有毛刺的信号)。

0.2.3 打开SignalTapII

打开Quartus后,在菜单栏中,选择“Tools”->”SignalTal II Logic Analyzer”,就可以打开SignalTap工具。

0.2.4 界面介绍

 

图 3 signaltap界面介绍

 

上面是SignalTap的界面,我们按照使用顺序简述地介绍每个部分功能。

红色标号1:下载线选择,点击setup选择硬件的USB接口

红色标号2:硬件检测,扫描有没有FPGA硬件。

红色标号3:选择工程配置文件。可以将综合后的sof文件加载进来

红色标号4:正式加载sof工程文件

红色标号5:设置采样时钟

红色标号6:设置RAM的大小

红色标号7:选择要观察的信号,并且设置触发条件

红色标号8:开始运行,等待触发条件满足后显示波形

红色标号9:这里可以观察FPGA资源使用情况。如果资源多于FPGA本身的资源,综合时会报错。

0.2.5 SignalTapII使用步骤

a 选择下载线、fpga芯片型号、工程配置文件

b 设置采样时钟、采样深度

这里我们选择clk50M作为采样时钟,注意采样时钟不一定是工程里的时钟,内部任何信号都可以是采样时钟。

这里我们将采样深度设置为128个。也就是我们总共能看到128采样点的数据。

c 选择采样信号

在setup窗口中,双击空白地方,弹出Node Finder界面

图 4 Node Finder界面

Filter是选择哪个阶段的信号,例如是综合前、综合后等,因为综合时会优化,有些信号可能就找不到了。我们一般选择pre-synthesis或Design Entry(all name)。

在Node Founder选择我们要观察的信号,添加到右边框即可。

d 设置触发条件

选择好信号后,设置触发条件。

在trigger Conditions一列中右击,将有6个选择。

don’t care:表示不关心,也就是说这个信号的值不影响触发条件。

Low :表示为0时触发,也就是说触发条件包括该信号的值为0.

Falling Edge:下降沿触发。即该信号的下降沿是触发条件

Rising Edge:上升沿触发。

High:给为1时触发

Either Edge:双沿触发,即有变化时触发。

以上是对一个信号的触发。如果触发条件包含多个信号,如下图所示:

注意,各信号之间触发条件是“与”的关系,而非是“或”的关系。

e 点击“Run Analysis”按钮,开始抓波形

f 观看结果

如果触发条件成立,则可在Data窗口观察到采样波形。

点击波形,则可以放大波形观看;右击波形,则是缩小波形。

实验1:项目创建、编译和下载

1.1 实验内容

1个拨码开关控制所有LED灯亮灭

1.2 实验流程

·         新建项目

·         新建bdf文件添加inputoutput元件。bdf文件是该设计中的顶层文件。分析查看是否有错误

·         新建vwf文件,编译后运行仿真,查看波形,验证电路是否正确

·         使用assignments-pin planner配置fpga I/O管脚

·         下载文件至fpga,在菜单栏中选择tools-programmer。板子与电脑连接后打开电源。使用hardware setup确认板子与电脑连接无误,按下左栏start。如图


图1- 1 下载程序至FPGA

1.3 bdf文件

图1- 2 一个拨码开关控制10个LED

1.4 vwf文件


图1- 3 vwf图

可从图中看出,led等的亮灭由SW控制

1.5 配置管脚

图1- 4 LED管脚

图1- 5 拨码开关SW管脚

1.6 实验结果

将拨码开关拨到1,可看到所有LED灯亮起。

实验2FPGA译码器组合逻辑

2.1 实验内容

1.放置2个2-4译码器模块,每个译码器分别有两个SW输入,4个LED输出 
2.设计一个4-16译码器,4个SW输入,16个LED输出。将8个LED的管脚配置到的DE0开发板的一个7段共阳极数码管上。如图

使用SW输入0-9-A-F,共16个数字和字母,每个字母的显示有特定的共阳极编码。

2.2 两个2-4译码器

2.2.1 2-4译码器模块verilog代码

1.  module decoder2to4(

2.      input [1:0] IN,

3.      output reg [3:0] OUT

4.  );

5.  always @(IN)

6.  begin

7.      case(IN)

8.          2'b00:OUT=4'b0001;

9.          2'b01:OUT=4'b0010;

10.         2'b10:OUT=4'b0100;

11.         2'b11:OUT=4'b1000;

12.     endcase

13. end

14. endmodule

2.2.2 bdf顶层文件

·         注意粗线是总线,意思是多位数据通信

·         改变output和总线的名称为XXX[n..0]形式,对应数据位数为n+1


图2- 1 2个2-4译码器bdf图

2.2.3 RTL

图2- 2 顶层RTL图

 

图2- 3 2-4译码器模块RTL图


双击顶层文件中的decoder2to4,可查看2-4译码器的RTL图。由图可知,2-4译码器的主要组成部分是输入输出和DECODER。

2.2.4 管脚配置

·         pins in bdf: bdf文件中输入输出的管脚名称

·         pins in DE0: DE0开发板上管脚

·         pins in FPGA: FPGA内部管脚

pins in bdf

pins in DE0

pins in FPGA

sw0

SW0

PIN_J6

sw1

SW1

PIN_H5

sw3

SW2

PIN_H6

sw4

SW3

PIN_G4

LED1[0]

LEDG0

PIN_J1

LED1[1]

LEDG1

PIN_J2

LED1[2]

LEDG2

PIN_J3

LED1[3]

LEDG3

PIN_H1

LED2[0]

LEDG4

PIN_F2

LED2[0]

LEDG5

PIN_E1

LED2[1]

LEDG6

PIN_C1

LED2[2]

LEDG7

PIN_C2

2.2.5 实验结果

将程序下载到板子上,拨动开关为0010,可观察到亮起等为LDEG0(第一组第0个)和LEDG6(第二组第2个)。

2.3 4-16译码器,数码管显示值0-F

2.3.1 程序:4-16译码器输出共阳极数码管编码

程序中的parameter C0-Cf是共阳极数码管显示0-F16进制编码。

1.  module decoder(

2.  input [3:0] data_in,

3.  output reg [7:0]data_out

4.  );

5.  parameter C0=8'hc0,

6.              C1=8'hf9,

7.              C2=8'ha4,

8.              C3=8'hb0,

9.   

10.             C4=8'h99,

11.             C5=8'h92,

12.             C6=8'h82,

13.             C7=8'hf8,

14.  

15.             C8=8'h80,

16.             C9=8'h90,

17.             Ca=8'h88,

18.             Cb=8'h83,

19.  

20.             Cc=8'hc6,

21.             Cd=8'ha1,

22.             Ce=8'h86,

23.             Cf=8'h8e;

24.  

25. always @(data_in)

26. begin

27.  

28.     case(data_in)

29.     4'b0000:begin data_out=C0; end

30.     4'b0001:begin data_out=C1; end

31.     4'b0010:begin data_out=C2; end

32.     4'b0011:begin data_out=C3; end

33.     4'b0100:begin data_out=C4; end

34.     4'b0101:begin data_out=C5; end

35.     4'b0110:begin data_out=C6; end

36.     4'b0111:begin data_out=C7; end

37.     4'b1000:begin data_out=C8; end

38.     4'b1001:begin data_out=C9; end

39.     4'b1010:begin data_out=Ca; end

40.     4'b1011:begin data_out=Cb; end

41.     4'b1100:begin data_out=Cc; end

42.     4'b1101:begin data_out=Cd; end

43.     4'b1110:begin data_out=Ce; end

44.     4'b1111:begin data_out=Cf; end

45.     endcase

46. end

47. endmodule

2.3.2 bdf文件

图2- 4 十六位译码器bdf图

2.3.3 RTL

图2- 5 十六位译码器RTL图顶层

图2- 6 十六位译码器+输出共阴极编码


双击顶层RTL图的decoder,显示出4-16译码输出共阴极编码的RTL图。 
将Decoder0展开,可以看到译码输出后,使用逻辑或将译码器的16个输出整合成8位输出。 
例如图中红线,当data_in==4'b0100时,根据程序,data_out应为C4=8'h99。从RTL中可以看出,WideOr0-6=1001100,则data_out[7..0]={WideOr0-6,1'h1}=8'b10011001=8'h99。和程序中输出一致。

2.3.5 配置管脚


图2- 7 pin planner中配置管脚情况

2.3.6 实验结果

SW4的拨码开关拨至1,其他为0,数码管的输出为4.

实验3:计数器波形仿真和signalTap

3.1 实验内容

·         设计0-17计数器,当计数值为17时,OV输出为1,其他输出为0

·         当技术值为0-8时,OV输出09-17时,OV输出为1

·         学会signaltap的使用

3.2 0-17计数器

3.2.1 0-17计数器代码

1.  module counter17(

2.  input rst,

3.  input clk,

4.  output reg[4:0] counter_output,

5.  output ov

6.  );

7.  parameter COUNT_NUM=17;

8.  assign ov=(counter_output==17)?1:0;

9.  always @(posedge clk or negedge rst)

10. begin

11.     if(!rst)

12.     begin

13.         counter_output<=4'd0;

14.     end

15.     else

16.     begin

17.         if(counter_output<COUNT_NUM)

18.         begin counter_output<=counter_output+1'b1; end

19.         else

20.         begin counter_output<=4'b0; end

21.     end

22. end

23. endmodule

3.2.2 bdf文件

图3- 1 0-17计数器bdf图

3.2.3 RTL

图3- 2 0-17计数器RTL顶层图(含输入输出)


图3- 3 0-17计数器RTL图



3.2.4 vwf波形

图3- 4 0-17计数器vwf波形

由图可以看出,当计数值为17时,OV输出为1,其他输出为0

3.2.5 signaltap波形

signaltap使用流程

·         菜单栏选择新建文件,选择signaltap

·         setup页面添加采样时钟,即为fpga的输入时钟

·         分析/编译后添加待观察信号

·         编译,并将程序下载到开发板上。因为改变观察信号就改变了电路

·         运行得出波形如下


图3- 5 0-17计数器signaltap波形

可以看出,和vwf文件中的仿真波形一致

3.3 0-17计数器,0-8OV输出09-17输出1

3.3.1 计数器程序

计数器在0-8时输出09-17时输出1

1.  module counter20(

2.  input rst,

3.  input clk,

4.  output reg[4:0] counter_output,

5.  output ov

6.  );

7.  parameter COUNT_NUM=17;

8.  assign ov=(counter_output>8)?1:0;

9.  always @(posedge clk or negedge rst)

10. begin

11.     if(!rst)

12.     begin

13.         counter_output<=4'd0;

14.     end

15.     else

16.     begin

17.         if(counter_output<COUNT_NUM)

18.         begin counter_output<=counter_output+1'b1; end

19.         else

20.         begin counter_output<=4'b0; end

21.     end

22. end

23. endmodule

3.3.2 bdf文件

图3- 6 计数器bdf图

3.3.3 RTL

图3- 7 顶层RTL图


图3- 8 计数器RTL图

此计数器RTL图与前一个计数器的基本一致,除了OV输出条件值不同。

3.3.4 vwf文件

图3- 9 计数器vwf波形

本实验中,0-8时刻OV为0,9-17时刻为1。

3.3.5 signaltap波形

图3- 10 计数器signaltap波形

signaltap的波形与vwf仿真波形一致。

3.3.6 思考题:LED灯的状态

当时钟是50MHz,把OV接到LED上,LED常亮。因为虽然OV输出1是周期性的,但周期过小,根据视觉残留效应,LED灯看起来并没有变化。

实验4:时间基准电路和带使能的多周期计数器

4.1 时间基准电路介绍及实验内容

1.时间基准电路介绍

·         定时发出窄脉冲

2.典型情况时序

·         T时间,生成一个宽度为P时间的脉冲

·         电路的工作时钟周期为P

·         使用一个计数器实现该时序

3.本实验设计目标 
设计时间基准电路和带使能的多周期计数器 
时间基准电路生成同步时间基准信号 
本质上是两级计数器级联的电路结构:第一级计数器生成时间基准信号,第二级计数器用时间基准信号作为计数使能

4.实验内容

·         第一个实验是第一级计数器计数范围为25000000,第二级计数器计数范围为0-15。将计数器0-15计数值经过译码,在DE0的数码管上显示为0-9-a-f的十六进制数

·         第二个实验是修改时间基准发生器,设计使用两个数码管计时,范围0-9.9,精度为0.1。并给计时器增加清零和暂停功能

4.2 signaltap分段触发

signaltap的分段触发是一种高级触发方式。具体操作见0.2节。

4.2.1 操作过程

·         选择触发信号en_out,查看en_out改变时其他信号的值

·         如图选中segmented模式,68样点

·         如图每次抓取触发事件附近的波形样点,抓取多次

图4- 1 signaltap设置

4.2.2 分段触发的捕获原理

·         一次填充一段数据RAM

·         多次填充

·         全部RAM被填充后,由JTAGPC

4.3 计数器显示十六进制数字

4.3.1 模块代码

本文件包含的模块有第一级0.5计数器,第二级0-15计数器和十六进制译码器

(1) 0.5s计数器

1.  // clock frequency is 50Mhz, accuracy is 0.1s, 10hz.50M/10=5M, 23bit

2.  module cnt_sync(

3.      input clk,

4.      output reg [31:0] CNTVAL,

5.      output OV

6.  );

7.  parameter MAX_VAL=25_000_000;

8.  always @(posedge clk)

9.      if(CNTVAL>=MAX_VAL)begin CNTVAL<=0; end

10.     else begin CNTVAL<=CNTVAL+1'b1; end

11.  

12. assign OV=(CNTVAL==MAX_VAL)?1:0;

13. endmodule

(2) 0-15计数器

1.  module cnt_en(

2.      input clk,

3.      input en,

4.      output reg[3:0] CNTVAL,

5.      output OV

6.  );

7.  always @(posedge clk)

8.      if(en)

9.      begin

10.         if(CNTVAL>=15)begin CNTVAL<=0; end

11.         else begin CNTVAL<=CNTVAL+1'b1; end

12.     end

13.     else

14.     begin

15.         CNTVAL<=CNTVAL;

16.     end

17. assign OV=(CNTVAL==15)?1:0;

18. endmodule

(3) 十六进制译码器

1.  module decoder(

2.  input [3:0] data_in,

3.  output reg [7:0]data_out

4.  );

5.  parameter C0=8'hc0,

6.              C1=8'hf9,

7.              C2=8'ha4,

8.              C3=8'hb0,

9.   

10.             C4=8'h99,

11.             C5=8'h92,

12.             C6=8'h82,

13.             C7=8'hf8,

14.  

15.             C8=8'h80,

16.             C9=8'h90,

17.             Ca=8'h88,

18.             Cb=8'h83,

19.  

20.             Cc=8'hc6,

21.             Cd=8'ha1,

22.             Ce=8'h86,

23.             Cf=8'h8e;

24.  

25. always @(data_in)

26. begin

27.  

28.     case(data_in)

29.     4'b0000:begin data_out=C0; end

30.     4'b0001:begin data_out=C1; end

31.     4'b0010:begin data_out=C2; end

32.     4'b0011:begin data_out=C3; end

33.     4'b0100:begin data_out=C4; end

34.     4'b0101:begin data_out=C5; end

35.     4'b0110:begin data_out=C6; end

36.     4'b0111:begin data_out=C7; end

37.     4'b1000:begin data_out=C8; end

38.     4'b1001:begin data_out=C9; end

39.     4'b1010:begin data_out=Ca; end

40.     4'b1011:begin data_out=Cb; end

41.     4'b1100:begin data_out=Cc; end

42.     4'b1101:begin data_out=Cd; end

43.     4'b1110:begin data_out=Ce; end

44.     4'b1111:begin data_out=Cf; end

45.     endcase

46. end

47.  

48.  

49. endmodule

4.3.2 bdf文件

图4- 2 计数器显示十六进制译码bdf图

4.3.3 RTL

图4- 3 顶层RTL图

 

图4- 4 0.5s计数器RTL图


图4- 5 0-15计数器RTL图


图4- 6 十六进制译码器+数码管显示RTL图

4.3.4 vwf文件

图4- 7 vwf波形

可以看出vwf文件1ms内各项输出基本无变化,因此要使用signaltap分段触发。

4.3.5 signaltap波形

图4- 8 signaltap波形

使用了分段触发方式,可以观察到在en_out上升沿时各信号改变情况。

4.4 0-9.9计时器

·         设计使用两个数码管计时,范围0-9.9,精度为0.1

·         给计时器增加清零(rst)和暂停(stop)功能

4.4.1 模块代码

使用模块包括0.1s计数器和1s计数器,10s计数器,两个数码管显示分别从09

(1)   0.1s计数器

注意事项:

·         0.1s计数器

·         按下<

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
废话不说了,下面进入正题,学习FPGA经历了这么几个阶段: ①、Verilog语言的学习,熟悉Verilog语言的各种语法。 ②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA板子。 ③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII的基本结构,设计NiosII开发板,编写NiosII C语言程序,调试板子各模块功能。 先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在 Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。像 systemC,systemVerilog之类的应该还在萌芽阶段,以后可能会有较大发展。鉴于以上原因我选择了Verilog作为我学习的硬件描述语 言。 其实有C语言的基础,学起Verilog的语言很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。这里推荐几本评价比较好的学习Verilog的书籍: ①、《verilog 数字系统设计教程》,这本书对于入门是一本很好的书,通俗易懂,让人很快上手,它里面的例子也不错。但本书对于资源优化方面的编程没有多少涉及到。 ②、《设计与验证Verilog HDL》,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。 学习Verilog其实不用看很多书,基本的语法部分大家都一样,关键是要自己会灵活应用,多做练习。 Verilog语言学了一段时间,感觉自己可以编点东西,希望自己编的程序在板子上运行看看结果,下面就介绍我学习的第二个阶段。 刚开始我拿了实验室一块CPLD的开发板做练习,熟悉QuartusII的各种功能,比如IP的调用,各种约束设置,时序分析,Logiclock设计方 法等,不过做到后面发现CPLD的资源不太够(没有内嵌的RAM、不能用SignalTapII,LE太少等),而实验室没有FPGA开发板,所以就萌生 了自己做FPGA开发板的意图,刚好Cadence我也学的差不多了,就花了几天时间主要研究了FPGA配置电路的设计,在板子上做了Jtag和AS下载 口,在做了几个用户按键和LED,其他的口全部引出作为IO口,电路比较简单,板子焊好后一调就通了(心里那个爽啊...)。我选的FPGA是 cycloneII系列的EP2C5,资源比以前的FPGA多了好几倍,还有PLL,内嵌的RAM,可以试试SignalTapII,用内嵌的逻辑分析仪 测试引脚波形,对于FPGA的调试,逻辑分析仪是至关重要的。利用这块板子我完成了项目中的几个主要功能:RS232通信,指令译码,配置DDS,AD数 据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。这个时候我主要看的数据有这几本感觉比较好: ①、《Altera FPGA/CPLD 设计(基础篇)》:讲解一些基本的FPGA设计技术,以及QuartusII中各个工具的用法 (IP,RTL,SignalProbe,SignalTapII,Timing Closure Floorplan,chip Editor等),对于入门非常好。 ②、《Altera FPGA/CPLD 设计(高级篇)》:讲解了一些高级工具的应用,LogicLock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。 ③、《FPGA设计指南--器件,工具和流程》:这本书看了他的目录忍不住就买了,这本书讲述了FPGA设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解FPGA的所有设计功能,了解FPGA开发的整个流程。
NIOS2 设计方案开发技术资料FPGA设计文档开发应用例子资料69个合集: Nios 2 小册子.pdf NIOS 2 开发常见问题.pdf Nios 2 软件代码优化方法.pdf NIOS 2常见问题总结.pdf NIOS 2应用开发ABC.pdf NIOS 2熟悉开发环境.pdf Nios2 的Boot过程分析.pdf NIOS 2熟悉开发环境.pdf NIOS2 FLASHStep_by_step.pdf Nios2之常见问题解答.pdf Nios2之软件调试技巧.pdf Nios2系统开发流程.pps Nios2软件调试技巧.pdf Nios_Starter.pdf Nio2集成开发环境问世.pdf NIOS入门.pdf Nios2入门实验程序问题整理.pdf Nios2嵌入式处理器的CPU结构.pdf NIOS2嵌入式系统的可扩展性分析.pdf Nios2教材.pdf NIOS2软核处理器的Linux引导程序U_boot设计.pdf 基于Altera Nios平台的信号高速采集系统.pdf 基于ARM+FPGA的大屏幕显示器控制系统设计.pdf 基于DSP与FPGA的LED显示屏控制系统的设计.pdf 基于DSP与FPGA的LED显示屏控制系统的设计2.pdf 基于DSP与FPGA的LED显示屏控制系统的设计3.pdf 基于DSP与FPGA的LED显示屏控制系统的设计4.pdf 基于DSP与FPGA的LED显示屏控制系统的设计5.pdf 基于DSP与FPGA的LED显示屏控制系统的设计6.pdf 基于DSP与FPGA的LED显示屏控制系统的设计7.pdf 基于FPGA乒乓球比赛游戏机的设计.pdf 基于FPGA圆阵超声自适应波束形成的设计.pdf 基于FPGA的AGWN信号生成器.pdf 基于FPGA的DDR SDRAM控制器在高速数据采集系统中的应用.pdf 基于FPGA的FFTIFFT处理器的实现.PDF 基于FPGA的PCB测试机硬件电路设计.pdf 基于FPGA的VGA时序彩条信号实现方法及其应用.pdf 基于FPGA的VGA显示模块设计.pdf 基于FPGA的嵌入式系统设计.pdf 基于FPGA的快速傅立叶变换.PDF 基于FPGA的总线型LVDS通信系统设计.pdf 基于FPGA的简易微型计算机结构.pdf 基于FPGA的简易数字存储示波器设计.pdf 基于FPGA的远程图像采集系统设计.pdf 基于FPGA的高速数字隔离型串行ADC应用.pdf 基于Nios 的通用数字调制器设计与实现.pdf 基于Nios的DDS技术在电磁无损检测中的应用.pdf 基于Nios的LED显示屏控制系统.pdf 基于Nio和eCos的串口通信程序开发.pdf 基于NIO嵌入式软核处理器的LCD控制方法研究.pdf 基于Nio的USB接口模块设计.pdf 基于Nio的纤维自动识别系统设计.pdf 基于NIOS处理器的SOPC应用系统研究与设计.pdf 基于NIOS处理器的面阵CCD采集系统设计.pdf 基于Nios嵌入式软核处理器的液晶显示屏控制.pdf 基于NIOS嵌入式软核的硬盘录像机的设计.pdf 基于Nios的DDS信号源实现.pdf 基于Nios的DDS高精度信号源实现.pdf 基于Nios的SOPC系统设计以及程序引导.pdf 基于NIOS的SOPC设计.pdf 基于Nios的掌纹鉴别系统设计与实现.pdf 基于NIOS的无中心电话系统中噪声的分析与抑制.pdf 基于Nios的通用编译码器的设计.pdf 基于NIOS软核CPU技术的多路电话计费系统的设计与实现.pdf 基于Nios软核的音频效果器.pdf 基于SYSTEM C的FPGA设计方法.pdf 基于声卡的LabVIEW数据采集与分析系统设计.pdf 基于多种EDA工具的FPGA设计.pdf 基于模糊控制的迟早门同步器及其FPGA实现.pdf

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值