使用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