FPGA初识:四选一多路选择器实例练习

一、项目创建
1、creat project在这里插入图片描述2、确认项目名和项目位置,“√”确认生成子目录
在这里插入图片描述
3、生成RTL项目文件,且“√”不添加特殊源文件
在这里插入图片描述
4、根据上面的筛选项或直接输入型号,找到对应FPGA开发板
在这里插入图片描述
5、确认信息
在这里插入图片描述
二、编辑源文件
1、设计源文件
添加源文件(add sources →design sources)
在这里插入图片描述
确认源文件名
在这里插入图片描述
添加源文件代码

module mux4_1_des(
input wire [1:0]sel,
input wire  s1,
input wire  s2,
input wire  s3,
input wire  s4,
output wire   led
    );
    assign led=(!sel[0]&!sel[1]&s1)|(sel[0]&!sel[1]&s2)|(!sel[0]&sel[1]&s3)|(sel[0]&sel[1]&s4);
endmodule

2、添加顶层文件(通过顶层文件调用源文件,养成良好编程习惯)
add sources →design sources→creat source file
添加顶层文件代码

module mux4_1_topdes(
input wire [5:0]sw,
output  wire led
    );
    mux4_1_des m(
    .sel(sw[5:4]),
    .s1(sw[0]),
    .s2(sw[1]),
    .s3(sw[2]),
    .s4(sw[3]),
    .led(led)
    );
endmodule

三、行为仿真(提供仿真输入信号)
1、创建仿真文件(add sources→simulation sources)
2、添加仿真文件代码


module mux4_1_sim();

    reg s1,s2,s3,s4;
    reg [1:0]sel;
    wire led;
    
     mux4_1_des test(
    .sel(sel),
    .s1(s1),
    .s2(s2),
    .s3(s3),
    .s4(s4),
    .led(led)
    );
    initial begin
    #0
    s1=0;
    s2=1;
    s3=1;
    s4=1;
    sel=2'b00;//1
    
    #100
    s1=1;
    s2=0;
    s3=1;
    s4=1;
    sel=2'b01;//2
    
    #100
    s1=1;
    s2=1;
    s3=0;
    s4=1;
    sel=2'b10;//3
    
    #100
    s1=1;
    s2=1;
    s3=1;
     s4=0;
    sel=2'b11;//4
    
    #100
    s1=1;
    s2=0;
    s3=0;
    s4=0;
    sel=2'b00;//5
    
    #100
    s1=0;
    s2=1;
    s3=0;
    s4=0;
    sel=2'b01; //6
    
    #100
    s1=0;
    s2=0;
    s3=1;
    s4=0;
   sel=2'b10; //7
    
    #100
    s1=0;
    s2=0;
    s3=0;
    s4=1;
    sel=2'b11;//8
    #100
   $finish;
    end
endmodule

3、把仿真源文件设为top模块
4、运行行为仿真(synthsis→open synthsis→run behavioral simulation),检查仿真结果是否正确
在这里插入图片描述
注意可能会出现如下错误,请修改仿真文件里的变量类型(reg wire)
在这里插入图片描述
四、RTL分析
在rtl分析中打开原理图(RTL ANALYSIS→open elaborated design),查看设计是否满足要求
在这里插入图片描述

五、综合,编写约束文件
1、综合(run synthsis→open synthsizd design→schematic),
查看原理图,这个原理图跟rtl的原理图不同,这个是与器件相关的,而rtl原理图只是将硬件编程语言用电路图描述出来。
(如果看原理图只能看到device,在左侧菜单栏里寻找schematic点击即可)
在这里插入图片描述
2、约束
创建约束文件(add sources→constraints)
在这里插入图片描述
编辑io引脚(layout→I/O planning) ,进行电平约束和引脚约束
在这里插入图片描述
在这里插入图片描述
然后crtl+s保存至刚刚创立的约束文件
在这里插入图片描述

set_property IOSTANDARD LVCMOS33 [get_ports {sw[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports led]

set_property PACKAGE_PIN F22 [get_ports {sw[5]}]
set_property PACKAGE_PIN G22 [get_ports {sw[4]}]
set_property PACKAGE_PIN H22 [get_ports {sw[3]}]
set_property PACKAGE_PIN F21 [get_ports {sw[2]}]
set_property PACKAGE_PIN H19 [get_ports {sw[1]}]
set_property PACKAGE_PIN H18 [get_ports {sw[0]}]
set_property PACKAGE_PIN U10 [get_ports led]

六、实现及时序仿真
1、实现(run implementation)
在这里插入图片描述
2、时序仿真(run simulation→run post-implemention timing simulation),时序仿真可以观查延迟,毛刺等,与之前的行为仿真不同。
在这里插入图片描述

七、下载比特流文件
1、生成比特流文件(generate bitstream)
在这里插入图片描述
2、打开硬件管理(Open hardware manager)→打开目标(open target)→自动连接(auto connect)→program device(下载到FPGA核心板上)
3、实物测试
(板子目前还没到,暂时没有做测试)

  • 0
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值