当前位置:首页 > 新闻资讯 > FPGA之家动态 >

vivado进阶:FPGA实现(一)

时间:2025-03-24      来源:FPGA_UCY 关于我们 0

中国大学MOOC

[UESTC数字设计FPGA应用]

通过实践,进一步掌握硬件描述语言( HDL)与开发的全过程。在的开发环境下,使用 HDL编译代码。根据原理图和对于端口的说明,编写约束文件,对电路进行实现,并进行仿真,然后下载到电路板验证。 以简单工程多数表决器为例,进行实现。掌握 HDL的基本语言,FPGA的仿真方法,以及开发板的使用方法。 第一个工程:多数表决器

使用FPGA实现简单的组合逻辑电路。

三个输入分别是a,b,c,输出是f。

基本思路:

1、根据问题的描述作出真值表;

2、得到最小项表达式;

3、卡诺图圈图得到逻辑函数的表达式;

4、下新建工程进行开发。

进入工程

小贴士:

1、左侧 (工程管理)中有设置一项,可以对使用的开发板进行修改。

开发fps游戏需要什么_开发fpga用什么配置电脑_FPGA开发

2、在比特流选项中选择-bin.file,是需要最后下载到FPGA配置的Flash。

3、发现自己找不到的小框之后,可以单击左侧栏中的 来找到。

4、界面右上角会显示项目的工作状态。

设计源文件代码

module v_dsbjq(
  input a,
  input b,
  input c,
  output f
    );
    assign f=a&b|b&c|a&c;   //f=ab+ac+bc
endmodule

之后可以进行RTL分析,发现其实正好是一个门级电路。

进行仿真

1、创建仿真文件,建议命名前加sim_,便于记忆区分。该工程的仿真文件命名为。

注:仿真文件不需要任何的输入输出参数

module sim_dsbjq();
 reg a,b,c;   //定义reg型,
 wire f;     //定义输入输出变量
 v_dsbjq  u1(a,b,c,f);  //调用模块,命名实例,源模块和仿真模块参数名称这里相同
 initial
 begin
 a=0;b=0;c=0;
 end
 always #10 {a,b,c}={a,b,c}+1;
endmodule

开发fps游戏需要什么_FPGA开发_开发fpga用什么配置电脑

使用reg型变量的原因:

1、为模块的激励信号准备寄存器,其值可以在仿真文件中改写,如果使用wire型变量就不行了

2、仿真的时候需要对模块施加激励信号,激励信号就从这些寄存器生成

3、可以修改值,存储值,用于仿真的激励信号很合适

调用模块成功的条件:

1、a,b,c这三个寄存器变量和模块dsbjq的三个输入变量同名

2、f这wire变量f和模块dsbjq的输出变量f同名

3、且调用顺序和模块dsbjq的接口信号顺序一致!

module sim_dsbjq();
 reg in_a,in_b,in_c;   //定义reg型,
 wire out_f;     //定义输入输出变量
 v_dsbjq  u1(
 .a(in_a),
 .b(in_b),
 .c(in_c),
 .f(f));  //调用模块,命名实例,源模块和仿真模块参数名称这里相同
 initial
 begin
 in_a=0;in_b=0;in_c=0;
 end
 always #10 {in_a,in_b,in_c}={in_a,in_b,in_c}+1;
endmodule

换一种调用方式:

.a(in_a) 前者表示源模块中的参数,括号是送给该参数的值,也可以直接给0或者1。

使用工程管理窗口的“仿真”选项,进行行为级仿真,仿真结果会在右侧以页框的形式出现。

编写约束文件

在添加设计源文件和仿真文件相同的界面目录中添加约束文件(),进入相同流程,所不同的是创建新文件名:(习惯前缀con_),文件类型为XDC。之后可以看到在文件目录下约束项目录下出现该文件。

注:约束文件的功能

1、为模块分配FPGA管脚;

2、为FPGA的管脚配置输入输出电平标准或其他属性;

3、根据于模块信号的输入输出类型,配置被约束的FPGA管脚是输入还是输出。

## switches拨码开关
set_property PACKAGE_PIN F3 [get_ports a]
set_property IOSTANDARD LVCMOS33 [get_ports a]
set_property PACKAGE_PIN H4 [get_ports b]
set_property IOSTANDARD LVCMOS33 [get_ports b]
set_property PACKAGE_PIN N4 [get_ports c]
set_property IOSTANDARD LVCMOS33 [get_ports c]
## led 灯管显示
set_property PACKAGE_PIN E3 [get_ports f]
set_property IOSTANDARD LVCMOS33 [get_ports f]

注:

1、 : 这里可以理解为关键字

2、 E3 [ a] : 管脚E3表示值a

3、 [ a] : 电平标准是3.3V

4、## 代表注释

综合实现 基本过程:

1、Run 进行综合

FPGA开发_开发fps游戏需要什么_开发fpga用什么配置电脑

2、综合完成后显示弹窗,可以直接在弹窗中进行实现,也可关闭显示框,在Flow 中进行Run 。

3、实现结束,打开实现的设计(可由弹出窗口打开),点击,出现最后的电路图。

4、页框也可以在工具栏————I/O 中打开。

可以通过行列观察到我们所用到的管脚。(双击放大可看到)

FPGA开发_开发fpga用什么配置电脑_开发fps游戏需要什么

5、在页框中放大可以观察到我们使用到的管脚,会发现我们只用到了极小的一部分。ctrl+滚轮 放大可以看到我们的H4管脚:

开发fpga用什么配置电脑_FPGA开发_开发fps游戏需要什么

生成比特流文件

在综合实现之后,就可以生成比特流文件了。比特流文件有两种类型:bit文件用于调试,bin文件用于最终下载到实验板的Flash芯片,每次上电后会根据Flash中的内容对FPGA进行配置。

调试

1、在左侧栏最下面,找到 AND DEBUG;

2、点击 ;

(注:综合,实现和生成比特流文件较费时,一分钟以上)

一般生成的比特流文件保存路径为后缀为runs的文件夹->文件夹中

3、生成之后,打开硬件管理器,和生成比特流文件在同一处,也可由生成比特流文件之后的弹出窗口界面来打开。

开发fpga用什么配置电脑_开发fps游戏需要什么_FPGA开发

4、点击open ,点击自动连接。(此时保证实验板已连接)

5、观察到设备已连接。

开发fps游戏需要什么_FPGA开发_开发fpga用什么配置电脑

6、点击上侧绿色区域 ,可以找到保存路径。在打开窗口中点击。比特流文件后缀为bit。

7、在实验板上操作,观察到实验成功。

下载到Flash

1、断电或者复位之后,发现实验不成功,显示的仍然是原先固化的程序。说明我们的文件没有下载到Flash,只是调试通过了。

2、需要下载到Flash,使程序断电之后仍然存在。

需要做的:

1、点击 “打开硬件管理” 最后一项,添加配置储存器件。

开发fps游戏需要什么_开发fpga用什么配置电脑_FPGA开发

2、输入栏中输入25q32,选择3.3V,点击OK。

FPGA开发_开发fps游戏需要什么_开发fpga用什么配置电脑

3、配置文件,选择bin文件,点击OK。开始下载到Flash。

开发fps游戏需要什么_开发fpga用什么配置电脑_FPGA开发

(下载比调试还要慢很多很多)

4、下载到产品。工作就OK!下载到FLASH时速度慢,复位或下电后FPGA的功能能保存。

FPGA开发_开发fpga用什么配置电脑_开发fps游戏需要什么

5、这个时候发现板子还是没有变化,只需要再次复位。就可以观察到实验板按照我们所需要的工程正常工作了。

任务完成

以上就是实现FPGA的一个简单工程及基本步骤,冲冲冲!


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言