Open-It FPGA トレーニングコース
実習時の参考資料（Vivado ツール/Nexys-4 DDR 版）
内田 智久 (KEK IPNS Esys)

Rev. 4.2
2017 年 10 月 19 日

1

1 2.2 で入力する HDL コード（TEST.v）‘timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 2014/07/31 18:02:58// Design Name:// Module Name: TEST// Project Name:// Target Devices:// Tool Versions:// Description://// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments:////////////////////////////////////////////////////////////////////////////////////

module TEST(
input SW_A,input SW_B,output LED0);
assign LED0 = SW_A & SW_B;
endmodule2

2 2.3 で入力するテストベンチ HDL コード（TEST TB.v）‘timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 2014/08/01 11:44:10// Design Name:// Module Name: TEST_TB// Project Name:// Target Devices:// Tool Versions:// Description://// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments:////////////////////////////////////////////////////////////////////////////////////

module TEST_TB;
reg SW_A;
reg SW_B;
wire LED0;
TEST uut(.SW_A(SW_A),.SW_B(SW_B),.LED0(LED0));
initial begin
SW_A = 1’b0;
SW_B = 1’b0;#100 SW_A = 1’b1;#300 SW_B = 1’b1;#200 SW_A = 1’b0;
endendmodule33 2.4 で使用するピンリスト
NamePackage Pin

I/O Std.

SW A

J15

SW B

Drive Str.

Oﬀ chip termination

Pull type

LVCMOS33

NONE

NONE

L16

LVCMOS33

NONE

NONE

SW C

M13

LVCMOS33

NONE

NONE

LED0

H17

LVCMOS33

12NONE

NONE

Slow

LED1

K15

LVCMOS33

12NONE

NONE

Slow

LED2

J13

LVCMOS33

12NONENONE

Slow

使用している信号のみ設定してください。空欄は設定不要です

4Slew

4 4.2 で入力する HDL コード（TEST.v）‘timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 2014/08/01 17:17:00// Design Name:// Module Name: TEST// Project Name:// Target Devices:// Tool Versions:// Description://// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments:////////////////////////////////////////////////////////////////////////////////////

module TEST(input OSC,input RST_SWn,
input SW_A,
input SW_B,
output LED0,output LED15);
assign LED0 = SW_A & SW_B;
reg [31:0]

sync_counter;always @(posedge OSC or negedge RST_SWn)begin
if(!RST_SWn)begin
sync_counter[31:0] <= 32’d0;
end else begin
sync_counter[31:0] <= sync_counter[31:0] + 32’d1;
end
end
assignLED15 = sync_counter[28];5

endmodule

65 4.2 で入力するテストベンチ HDL コード（TEST TB.v）‘timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 2014/08/01 17:17:36// Design Name:// Module Name: TEST_TB// Project Name:// Target Devices:// Tool Versions:// Description://// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments:////////////////////////////////////////////////////////////////////////////////////

module TEST_TB;
reg CLK100M;
reg RST_SWn;
reg SW_A;
reg SW_B;
wire LED0;
wire LED15;TEST uut(.OSC(CLK100M),.RST_SWn(RST_SWn),.SW_A(SW_A),.SW_B(SW_B),.LED0(LED0),.LED15(LED15));
initial begin
SW_A = 1’b0;
SW_B = 1’b0;

7

#100 SW_A = 1’b1;#300 SW_B = 1’b1;#200 SW_A = 1’b0;
endparameter PERIOD = 10;
always begin
CLK100M = 1’b0;#(PERIOD/2);
CLK100M = 1’b1;#(PERIOD/2);
end
initial begin
RST_SWn = 1’b0;#700 RST_SWn = 1’b1;
end
endmodule86 2.4 で使用するピンリスト
Name

Package Pin

I/O Std.

OSC

E3

RST SWn

Drive Str.

Oﬀ chip termination

Pull type

LVCMOS33

NONE

NONE

C12LVCMOS33

NONE

NONE

SW A

J15

LVCMOS33

NONE

NONE

SW B

L16

LVCMOS33

NONE

NONE

SW C

M13

LVCMOS33

NONE

NONE

LED0

H17

LVCMOS33

12NONENONE

Slow

LED1K15

LVCMOS33

12NONE

NONE

Slow

LED2

J13

LVCMOS3312NONE

NONE

Slow

LED15

V11

LVCMOS33

12NONENONE

Slow

使用している信号のみ設定してください。空欄は設定不要です

9Slew

7 6. で入力する HDL コード（TEST SYNC COUNTERv）‘timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 2015/06/26 09:03:02// Design Name:// Module Name: TEST_SYNC_COUNTER// Project Name:// Target Devices:// Tool Versions:// Description://// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments:////////////////////////////////////////////////////////////////////////////////////

module TEST_SYNC_COUNTER(input CLK,input RSTn,output LED);reg [31:0] sync_counter;always @(posedge CLK or negedge RSTn)begin
if(!RSTn)begin
sync_counter[31:0] <= 32’d0;
end else begin
sync_counter[31:0] <= sync_counter[31:0] + 32’d1;
end
endassign

LED = sync_counter[28];endmodule108 6. で入力する HDL コード（TEST.v）‘timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 2015/06/23 14:49:45// Design Name:// Module Name: TEST// Project Name:// Target Devices:// Tool Versions:// Description://// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments:////////////////////////////////////////////////////////////////////////////////////

module TEST(input OSC,input RST_SWn,
input SW_A,
input SW_B,
output LED0,output LED15);
assign LED0 = SW_A & SW_B;
TEST_SYNC_COUNTER U1(.CLK(OSC),.RSTn(RST_SWn),.LED(LED15));
endmodule11

9 7. で入力する HDL コード（TEST.v）‘timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company:// Engineer://// Create Date: 2015/07/09 15:51:39// Design Name:// Module Name: TEST// Project Name:// Target Devices:// Tool Versions:// Description://// Dependencies://// Revision:// Revision 0.01 - File Created// Additional Comments:////////////////////////////////////////////////////////////////////////////////////

module TEST(input OSC,input RST_SWn,
input SW_A,
input SW_B,
output LED0,output LED15);
wire
CLK200M;
wire
sys_reset;
sys_mmcm
mmcm_1(// Clock out ports.clk_out1(),// output clk_out1.clk_out2(CLK200M),// output clk_out2// Status and control signals.resetn(RST_SWn), // input resetn.locked(sys_reset),// output locked// Clock in ports.clk_in1(OSC));// input clk_in1

12assign LED0 = SW_A & SW_B;
TEST_SYNC_COUNTER U1(.CLK(CLK200M),.RSTn(sys_reset),.LED(LED15));
endmodule

13