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}]

如果不会,可以看这

3、烧入程序

待续。。。

4、调字体大小

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

经验分享 程序员 微信小程序 职场和发展