《一步一步學(xué)ZedBoard & Zynq》系列第二篇,目的是為了學(xué)習(xí)不使用ARM PS情況下,只對Zynq PL的編程方法,同時學(xué)習(xí)Xilinx?PlanAhead工具的使用方法?
硬件平臺:Digilent?ZedBoard
開發(fā)環(huán)境:Windows XP 32 bit
軟件:?XPS 14.2 +PlanAhead 14.2?
新建工程LAB2
項目設(shè)置中,需要將芯片選為Zynq
之后會提示引腳信息,默認(rèn)空就可以,隨后可以通過verilog代碼來實現(xiàn)。
進(jìn)入ISE后,添加源文件,內(nèi)容如下
/*
《一步一步學(xué)ZedBoard & Zynq》些列第二篇:使用Zynq的PL做流水燈
2012年9月11日10:31:13
超群天晴
*/
module ledwater(
input BTNU,
input GCLK,
output [7:0] LD
);
wire clk,rst;
reg [7:0] LD_reg;
reg [31:0] cnt;
assign clk = GCLK;
assign rst = ~BTNU;
assign LD = LD_reg;
always@(posedge clk or negedge rst)
begin
if(rst==1'b0)begin
LD_reg <= 8'b1000_0000;
cnt <= 32'b0;
end
else begin
if (cnt == 32'd25000000)begin
cnt <= 32'b0;
LD_reg <=(LD_reg>>1)|(LD_reg<<7);
end
else begin
cnt <= cnt + 32'b1;
end
end
end
endmodule
這里設(shè)定BTNU為復(fù)位,GCLK是時鐘
查看ZedBoard的原理圖,可以知道BTNU默認(rèn)是低電平。
為了實現(xiàn)rst下降沿復(fù)位,第38句使用了一次取反
1 assign rst = ~BTNU;
小燈的移位采用“左移1位+右移N-1”模式,第29行可以看出來
1 LD_reg <=(LD_reg>>1)|(LD_reg<<7);
設(shè)定引腳約束,ucf內(nèi)容如下。LOC表示引腳鎖定,IOSTANDARD表明引腳電平。完整的ucf文件可以從Diligent官方網(wǎng)站上下載
NET LD[0] LOC = T22 | IOSTANDARD=LVCMOS33; # "LD0"
NET LD[1] LOC = T21 | IOSTANDARD=LVCMOS33; # "LD1"
NET LD[2] LOC = U22 | IOSTANDARD=LVCMOS33; # "LD2"
NET LD[3] LOC = U21 | IOSTANDARD=LVCMOS33; # "LD3"
NET LD[4] LOC = V22 | IOSTANDARD=LVCMOS33; # "LD4"
NET LD[5] LOC = W22 | IOSTANDARD=LVCMOS33; # "LD5"
NET LD[6] LOC = U19 | IOSTANDARD=LVCMOS33; # "LD6"
NET LD[7] LOC = U14 | IOSTANDARD=LVCMOS33; # "LD7"
NET GCLK LOC = Y9 | IOSTANDARD=LVCMOS33; # "GCLK"
NET BTNU LOC = T18 | IOSTANDARD=LVCMOS18; # "BTNU"
?使用PlanAhead I/O pin planing(post synthesis)可以看到引腳約束的結(jié)果
?
下載之后能看到板子上LD0~LD7流水效果
?
?
?
?
評論
查看更多