在ISE平台上实现跑马灯并烧录到FPGA VIRTEX7板子上

首先新建工程文件File-New Project

我的FPGA板子型号如下:

 建好工程文件后编写代码:在红色区域右键New Source

 

 定义引脚:因为V7时钟为差分时钟,所以需要两个时钟信号clk_in_p、clk_in_n

 编辑led.v

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 22:33:25 01/15/2018 
// Design Name: 
// Module Name: led 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//
module led(
input clk_in_p,
input clk_in_n,
input reset,
output [3:0] led_out
);

reg [26:0] counter;

wire clk;
IBUFGDS clkgen(.O(clk),.I(clk_in_p),.IB(clk_in_n));

always @(posedge clk)
if (reset)
counter <= 0;
else 
counter <= counter + 1;

assign led_out = counter[26:23]; //用于烧写
//assign led_out = counter[3:0]; //用于仿真

endmodule

接下来进行仿真,编辑test.v

test.v如下

`timescale 1ns / 1ps

////
// Company: 
// Engineer:
//
// Create Date: 11:06:12 01/16/2018
// Design Name: led
// Module Name: C:/Users/dell/Desktop/led/led/test.v
// Project Name: led
// Target Device: 
// Tool versions: 
// Description: 
//
// Verilog Test Fixture created by ISE for module: led
//
// Dependencies:
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
////

module test;

// Inputs
reg clk_in_p;
reg clk_in_n;
reg reset;

// Outputs
wire [3:0] led_out;

parameter PERIOD = 10;

// Instantiate the Unit Under Test (UUT)
led uut (
.clk_in_p(clk_in_p), 
.clk_in_n(clk_in_n), 
.reset(reset), 
.led_out(led_out)
);

always begin

#(PERIOD/2) clk_in_p = 1'b1;clk_in_n = 1'b0;
#(PERIOD/2) clk_in_p = 1'b0;clk_in_n = 1'b1;
end

initial begin
// Initialize Inputs
clk_in_p = 1'b0;
clk_in_n = 1'b0;
reset = 1;

// Wait 100 ns for global reset to finish
#500;

// Add stimulus here
reset = 0;

end

endmodule

编辑完test.v之后,点击红色区域,实现仿真

仿真页面如下

编写约束文件

NET "clk_in_p" LOC = E19;
NET "clk_in_n" LOC = E18;
NET "led_out[0]" LOC = AM39;
NET "led_out[1]" LOC = AN39;
NET "led_out[2]" LOC = AR37;
NET "led_out[3]" LOC = AT37;
NET "reset" LOC = AV40;

NET "clk_in_p" IOSTANDARD = LVDS;
NET "clk_in_n" IOSTANDARD = LVDS;
NET "led_out[0]" IOSTANDARD = LVCMOS18;
NET "led_out[1]" IOSTANDARD = LVCMOS18;
NET "led_out[2]" IOSTANDARD = LVCMOS18;
NET "led_out[3]" IOSTANDARD = LVCMOS18;
NET "reset" IOSTANDARD = LVCMOS18;
编译通过

实现烧写:红色区域——run

 

 

 

 

 

 

 

 右键: program

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/shirley-lian/p/8301832.html

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值