Verilog语言快速入门(零)-软件的基本操作 Vivado

1、打开软件

 

左边点击Quick Start - Creat Project 创造一个新项目

右边是最近的项目

文件名,位置,是否创建子目录

 项目类型,我们用RTL 项目

 芯片选择,我们用这个        (之后可以在setting里改)

 2、代码

一般我们要写三种代码:

  • 设计代码
  • 测试代码
  • 引脚约束代码

Add Sources

 分别是:约束,设计,仿真

我们先写个设计

 添加文件夹,添加子目录,创建文件夹

如果有代码可以直接添加。这里,我们没有,所以创建一个

 我们这里做一个4位二进制-BCD码转换器

 

 定义模块,名字,引脚

 我们定义b[3:0]输入,p[4:0]输出

然后,就可以在Sources里看到我们刚创建的文件,点开

 他会自动帮你写一部分

 然后,我们再随便写一下补充,这里我们用assign语句,把输出的表达式写上即可。

(输出表达式用真值表写,抄一下即可,都不用化简)

 下面,RTL分析,点击Schemtic

额,看来他没有自动化简功能,我们在勉为其难的化简一下吧。

 这里显示我们有90个单元,9个IO口,94个节点。

 

我们用卡诺图进行化简

 保存时,会弹出这个警告,我们reload 就欧克了

 

重新RTL分析,简单了很多

 下面我们开始写测试代码

 

 

 这里他自动把模块的源代码放在了一个文件夹里,方便调用

 测试代码  感觉组合电路都可以这样测试,遍历下每种情况

`timescale 1ns / 1ps

module bin_to_bcd4_test;
    reg  b3,b2,b1,b0;
    wire p4,p3,p2,p1,p0;
    bin_to_bcd4(b3,b2,b1,b0,p4,p3,p2,p1,p0);
    initial  //产生置/复位信号的激励
    begin
       b3=0;b2=0;b1=0;b0=0;  //赋初值
    end 
    always  #10 {b3,b2,b1,b0} = {b3,b2,b1,b0} + 1;  //每次加一,#10 表示每十个单位时间
    
endmodule

测试

 在所有代码没错的情况下,你就可以看到信号仿真。

(果然80%的时间都在debug,/(ㄒoㄒ)/~~)

 在这里我犯了两个错

  • 或,应该用 ” | “,而不是 ” + “
  • 调用模块应该时,应该命名模块      bin_to_bcd4  uut(b3,b2,b1,b0,p4,p3,p2,p1,p0);

接下来我们来写约束代码

 

 引脚设置如下

##Switches
set_property PACKAGE_PIN Rl [get_ports {b0}]            b0->R1
set_property IOSTANDARD LVCMOS33 [get_ports {b0}]
set_property PACKAGE_PIN N4 [get_ports {b1}]            b1->N4  
set_property IOSTANDARD LVCMOS33 [get_ports (b1}]
set_property PACKAGE_PIN M4 [get_ports {b2}]            b2->M4
set_property IOSTANDARD LVCMOS33 [get_ports {b2}]
set_property PACKAGE_PIN R2 [get _ports {b3}]            b->R2
set_property IOSTANDARD LVCMOS33 [get_ports {b3}]

##led
set_property PACKAGE_PIN K2 [get_ports {p0}]            p0->K2
set_property PACKAGE_PIN J2 [get_ports {p1}]            p1->J2
set_property PACKAGE_PIN J3 [get_ports {p2}]            p2->J3
set_property PACKAGE_PIN H4 [get_ports {p3}]            p3->H4
set_property PACKAGE_PIN J4 [get_ports {p4}]            p4->J4
set_property IOSTANDARD LVCMOS33 [get_ports {p0}]
set_property IOSTANDARD LVCMOS33 [get_ports {p1}]
set_property IOSTANDARD LVCMOS33 [get_ports [p2}]
set_property IOSTANDARD LVCMOS33 [get_ports {p3}]
set_property IOSTANDARD LVCMOS33 [get_ports {p4}]

如果不会,可以看这

VIVADO中约束文件怎么写_IC媛的博客-CSDN博客_vivado约束文件怎么写约束文件怎么写:Vivado中的xdc是基于Synopsys的设计约束(SDC),同时也是Xilinx专有的物理约束。我这次主要用到时钟约束和引脚约束,两者都有文本设置和GUI设置。具体的实现过程,可以看《Xilinx FPGA权威设置指南》时钟约束和I/O管脚约束:(1)时钟约束set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets sys_clk]set_property PACKAGE_PIN J8 [get_ports {sys_clk_p[https://blog.csdn.net/qq_38374491/article/details/116118402

3、烧入程序

待续。。。

4、调字体大小

我竟然看着12的字体看了一晚上,眼睛快没了,大家要爱护眼睛    /(ㄒoㄒ)/~~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值