vivado简单小例子

   使用vivado2018.3 来编写一个简单的程序,演示从建文件夹到添加.v文件、约束文件以及仿真文件整个过程,解决可能遇到的问题。

打开软件2018.3

点击creat Project>next


 

1)输入文件名flowing_led(针对自己的代码功能)

2)选择存储的位置

3)勾选"创建子项目"(creat project subdirectory),点击next 


 选择第一项,勾选“不立刻添加具体资源”(do not specify sources at this time),点击next 


根据自己的开发板器件手册修改上述内容。点击next 


 

 对着内容,若正确 点击finsh


 新建.v文件

design sources>add sources


选择第二项,点击NEXT


 

 按顺序进行1-5步(2.选择语言、3.文件名)


 

 定义I/o口,注意写清楚输入输出;

若为总线形式(如图示led)并正确定义MSB、LSB(高位、低位)

点击OK


 

书写代码:

module led(
    input rst,
    input clk,
    output [3:0] led
    );
    
  reg [23:0] cnt_reg;
  reg [3:0]  light_reg;
 //计数器 
  always@(posedge clk)
  begin
        if(rst)
            cnt_reg<=0;
        else
            cnt_reg<=cnt_reg+1;
  end  
  always@(posedge clk)
  begin
        if(rst)
            light_reg<=4'b0001;
        else if(cnt_reg>0)
            begin
                if( light_reg==4'b1000)
                   light_reg<=4'b0001;
                 else
                    light_reg<= light_reg<<1;//计数器记数一次灯左移一位,移至最左且遇到计数器计数则复位状态,重复
            end
          
  end  
  assign led=light_reg;
endmodule

 


 

添加约束条件 右击constraints>add sources


选择第一项>next


 按顺序1—5步


 

 输入约束代码:

set_property PACKAGE_PIN D18 [get_ports {led[3]}]
set_property PACKAGE_PIN G14 [get_ports {led[2]}]
set_property PACKAGE_PIN M17 [get_ports {led[1]}]
set_property PACKAGE_PIN M16 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property PACKAGE_PIN L16 [get_ports clk]
set_property PACKAGE_PIN G16 [get_ports rst]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports rst]

 


 

添加仿真文件:

simulation sources>add sources>add or creat a simulation sources

 

  按顺序1—5步


 

 点击OK


 

书写仿真代码:


module led_sim(

    );
  
    reg cnt_reg;
    reg clk,rst;
    wire [3:0] led;
    led u1( rst,clk,led);
    //产生时钟 50ns翻转一次,T=100ns
    initial begin
     clk=1;
     forever #50 clk=~clk;
    end
    
     initial begin
     rst=1;
     #500 rst=0; 
     #500 rst=1;
      rst=0;
     end

endmodule

 点击run synthesis

 点击run simulation

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值