spartan-3e starter kit board 入门

本篇博文简要介绍下通过ISE操作spartan-3e starter kit board上的4个滑动开关和8个led灯。

 

一、设计思路

1、板子上的led灯一端已经接低电平了,所以,要点亮的话就要向另一端输出高电平即可。

2、板子上自带的50MHZ晶振以及reset键都是设计模块的输入。以便能够及时响应3中的输入。

3、4个滑动开关中SW2、SW1、SW0作为另一组输入。

4、SW2、SW1、SW0的编码即是要被点亮的led灯。即其=000,则led0点亮、=001,led1点亮。

 

二、从ISE建立project到最终将.bit下载到板子

1、fire->new project

2、芯片的型号以及封装必须选择好

3、

4、右键单击工程管理区,选择new source,选择verilog module,填入fire name

spartan-3e starter kit board 入门_第1张图片

5、设置模块的输入输出口,就是verilog源码中的input与output

spartan-3e starter kit board 入门_第2张图片

6、

7、在客户区输入所要构建的模块的verilog源码

8、源码编辑好后,左键双击过程管理区的check syntax确认有没有语法错误

spartan-3e starter kit board 入门_第3张图片

9、左键双击synthesize-xst完成综合

spartan-3e starter kit board 入门_第4张图片

10、view选择simulation,右键单击工程管理区,选择new source,选择verilog test fixture,输入file name

spartan-3e starter kit board 入门_第5张图片

11、

spartan-3e starter kit board 入门_第6张图片

12、

spartan-3e starter kit board 入门_第7张图片

13、输入测试代码,本例就是在客户区的红线区域。其他例子不一定!

14、右键单击simulate behavioral model,选择properties设置仿真的一些参数。

spartan-3e starter kit board 入门_第8张图片

15、

16、右键单击工程管理区,选择new source,选择implementation constraints file

spartan-3e starter kit board 入门_第9张图片

17、

spartan-3e starter kit board 入门_第10张图片

18、输入约束代码

spartan-3e starter kit board 入门_第11张图片

19、双击implement design,完成实现步骤

spartan-3e starter kit board 入门_第12张图片

20、实现完成之后,通过design summary,查看pinout report。如果,引脚约束与你定义的一致,则正确;

否则,右键依次双击synthesize-xst与implement design,直到引脚约束正确方可进行下一步。

spartan-3e starter kit board 入门_第13张图片

21、双击generate programming file,产生.bit文件

spartan-3e starter kit board 入门_第14张图片

22、双击configure target device,点击ok,代开iMPACT准备下载.bit文件到板子

spartan-3e starter kit board 入门_第15张图片

23、双击boundary scan

spartan-3e starter kit board 入门_第16张图片

24、

spartan-3e starter kit board 入门_第17张图片

25、左键点击initialize chain,检测板子的存在

spartan-3e starter kit board 入门_第18张图片

26、选择要现下载的.bit文件

spartan-3e starter kit board 入门_第19张图片

27、

spartan-3e starter kit board 入门_第20张图片

28、

spartan-3e starter kit board 入门_第21张图片

29、

spartan-3e starter kit board 入门_第22张图片

30、鼠标放在图标上(颜色会变深),点击右键,选择program,如果提示program successed,则说明

已成功下载。

31、操作板子,观察实验结果是否符合设计。

 

三、总结

1、博主的ISE版本是13.3。不同的版本操作可能会有所差异。

2、实验代码:

led代码:

module led(CLK,RST,LED,MODE);    
	 input CLK;
    input RST;
    input [2:0] MODE;
    output [7:0] LED;
	 
	 reg [7:0] LED = 8'b10101010;
	 reg [24:0] cnt_clk; 
	 reg div_clk; 
	 
always @ (posedge CLK or posedge RST)begin
	if(RST)begin
		cnt_clk <= 25'd0;
		div_clk <= 1'b0;
	end
	else begin
		if(cnt_clk == 25'd9999999)begin
			cnt_clk <=25'd0;
			div_clk <= ~div_clk;
		end
		else begin
			cnt_clk <= cnt_clk + 1'b1;
			div_clk <= div_clk;
		end
	end
end

always @ (posedge div_clk or posedge RST)begin
	if(RST)begin
		LED <= 8'b10101010;
	end
	else begin
		case (MODE)
			3'b000 :	LED <= 8'b1;						
			3'b001 :	LED <= 8'b10;
			3'b010 :	LED <= 8'b100;
			3'b011 : LED <= 8'b1000;
			3'b100 : LED <= 8'b10000;
			3'b101 :	LED <= 8'b100000;
			3'b110 : LED <= 8'b1000000;
			3'b111 : LED <= 8'b10000000;
		endcase
	end
end

endmodule

ucf约束文件:

NET "CLK" LOC = "C9" | IOSTANDARD = LVCMOS33;
NET "CLK" PERIOD = 20ns HIGH 40%;
NET "RST" LOC = "K17" | IOSTANDARD = LVTTL | PULLDOWN;
NET "MODE<0>" LOC = "L13" | IOSTANDARD = LVTTL | PULLUP;
NET "MODE<1>" LOC = "L14" | IOSTANDARD = LVTTL | PULLUP;
NET "MODE<2>" LOC = "H18" | IOSTANDARD = LVTTL | PULLUP;
NET "LED<0>" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
NET "LED<1>" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
NET "LED<2>" LOC = "E11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
NET "LED<3>" LOC = "F11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
NET "LED<4>" LOC = "C11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
NET "LED<5>" LOC = "D11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
NET "LED<6>" LOC = "E9"  | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;
NET "LED<7>" LOC = "F9"  | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 4;

仿真代码:

module led_test;

	// Inputs
	reg CLK;
	reg RST;
	reg [2:0] MODE;

	// Outputs
	wire [7:0] LED;

	// Instantiate the Unit Under Test (UUT)
	led uut (
		.CLK(CLK), 
		.RST(RST), 
		.LED(LED), 
		.MODE(MODE)
	);

	always #5 CLK = ~CLK;
		
	initial begin
		// Initialize Inputs
		CLK = 0;
		RST = 0;
		MODE = 0;

		// Wait 100 ns for global reset to finish
		#100;
        
		// Add stimulus here
		RST = 0;
		MODE = 3'b001;
		#10000;
		MODE = 3'b010;
		#10000;
		MODE = 3'b100;
		#1000 $stop;

	end
      
endmodule


3、以前学过cc2430的板子,现在开始学FPGA,纯菜鸟一枚呀。不过总体感觉来说,硬件的东西,

那些芯片的资料是很重要的。一块电路板上一般都是一个处理器外加若干外设,外设也和处理器有

连接了,但这都是坐在电路板上了。需要芯片资料来获得一定的信息,便于我们使用。

4、也期待大神们不吝赐教!

 

你可能感兴趣的:(spartan-3e starter kit board 入门)