Added spiOverJtag for Spartan3E (xc3s500evq100)

This commit is contained in:
Stephan Ruloff 2022-03-25 21:29:00 +01:00
parent f8da6717ce
commit a12793ed70
5 changed files with 44 additions and 2 deletions

View File

@ -1,4 +1,4 @@
XILINX_PARTS := xc6slx16ftg256 xc6slx16csg324 xc6slx45csg324 xc6slx100fgg484 \ XILINX_PARTS := xc3s500evq100 xc6slx16ftg256 xc6slx16csg324 xc6slx45csg324 xc6slx100fgg484 \
xc6slx150tfgg484 \ xc6slx150tfgg484 \
xc7a35tcpg236 xc7a35tcsg324 xc7a35tftg256 \ xc7a35tcpg236 xc7a35tcsg324 xc7a35tftg256 \
xc7a50tcpg236 xc7a75tfgg484 xc7a100tcsg324 xc7a100tfgg484 xc7a200tsbg484 \ xc7a50tcpg236 xc7a75tfgg484 xc7a100tcsg324 xc7a100tfgg484 xc7a200tsbg484 \

View File

@ -44,12 +44,18 @@ elif subpart == "xc7s":
elif subpart == "xc6s": elif subpart == "xc6s":
family = "Spartan6" family = "Spartan6"
tool = "ise" tool = "ise"
speed = -3
elif subpart == "xc3s":
family = "Spartan3E"
tool = "ise"
speed = -4
else: else:
print("Error: unknown device") print("Error: unknown device")
os.sys.exit() os.sys.exit()
if tool in ["ise", "vivado"]: if tool in ["ise", "vivado"]:
pkg_name = { pkg_name = {
"xc3s500evq100" : "xc3s_vq100",
"xc6slx16ftg256" : "xc6s_ftg256", "xc6slx16ftg256" : "xc6s_ftg256",
"xc6slx16csg324" : "xc6s_csg324", "xc6slx16csg324" : "xc6s_csg324",
"xc6slx45csg324" : "xc6s_csg324", "xc6slx45csg324" : "xc6s_csg324",
@ -73,18 +79,20 @@ if tool in ["ise", "vivado"]:
cst_type = "UCF" cst_type = "UCF"
tool_options = {'family': family, tool_options = {'family': family,
'device': { 'device': {
"xc3s500evq100": "xc3s500e",
"xc6slx16ftg256": "xc6slx16", "xc6slx16ftg256": "xc6slx16",
"xc6slx16csg324": "xc6slx16", "xc6slx16csg324": "xc6slx16",
"xc6slx45csg324": "xc6slx45", "xc6slx45csg324": "xc6slx45",
"xc6slx100fgg484": "xc6slx100", "xc6slx100fgg484": "xc6slx100",
"xc6slx150tfgg484": "xc6slx150t"}[part], "xc6slx150tfgg484": "xc6slx150t"}[part],
'package': { 'package': {
"xc3s500evq100": "vq100",
"xc6slx16ftg256": "ftg256", "xc6slx16ftg256": "ftg256",
"xc6slx16csg324": "csg324", "xc6slx16csg324": "csg324",
"xc6slx45csg324": "csg324", "xc6slx45csg324": "csg324",
"xc6slx100fgg484": "fgg384", "xc6slx100fgg484": "fgg384",
"xc6slx150tfgg484": "fgg484"}[part], "xc6slx150tfgg484": "fgg484"}[part],
'speed' : -3 'speed' : speed
} }
else: else:
cst_type = "xdc" cst_type = "xdc"

View File

@ -0,0 +1,5 @@
NET "sdi_dq0" LOC = P27 | IOSTANDARD = LVCMOS33;
NET "sdo_dq1" LOC = P44 | IOSTANDARD = LVCMOS33;
NET "csn" LOC = P24 | IOSTANDARD = LVCMOS33;
NET "sck" LOC = P50 | IOSTANDARD = LVCMOS33;

Binary file not shown.

View File

@ -1,8 +1,12 @@
module spiOverJtag module spiOverJtag
( (
output csn, output csn,
`ifdef spartan6 `ifdef spartan6
output sck, output sck,
`endif
`ifdef spartan3e
output sck,
`endif `endif
output sdi_dq0, output sdi_dq0,
input sdo_dq1, input sdo_dq1,
@ -41,6 +45,10 @@ module spiOverJtag
`ifdef spartan6 `ifdef spartan6
assign sck = drck; assign sck = drck;
`else
`ifdef spartan3e
assign sck = drck;
assign runtest = tmp_up_s;
`else `else
STARTUPE2 #( STARTUPE2 #(
.PROG_USR("FALSE"), // Activate program event security feature. Requires encrypted bitstreams. .PROG_USR("FALSE"), // Activate program event security feature. Requires encrypted bitstreams.
@ -61,7 +69,27 @@ module spiOverJtag
.USRDONETS(1'b1) // 1-bit input: User DONE 3-state enable output .USRDONETS(1'b1) // 1-bit input: User DONE 3-state enable output
); );
`endif `endif
`endif
`ifdef spartan3e
BSCAN_SPARTAN3 bscane2_inst (
.CAPTURE(capture), // 1-bit output: CAPTURE output from TAP controller.
.DRCK1 (drck), // 1-bit output: Gated TCK output. When SEL
// is asserted, DRCK toggles when
// CAPTURE or SHIFT are asserted.
.DRCK2 (), // 1-bit output: USER2 function
.RESET (), // 1-bit output: Reset output for TAP controller.
.SEL1 (sel), // 1-bit output: USER1 instruction active output.
.SEL2 (), // 1-bit output: USER2 instruction active output.
.SHIFT (), // 1-bit output: SHIFT output from TAP controller.
.TDI (tdi), // 1-bit output: Test Data Input (TDI) output
// from TAP controller.
.UPDATE (update), // 1-bit output: UPDATE output from TAP controller
.TDO1 (tdo), // 1-bit input: Test Data Output (TDO) input
// for USER1 function.
.TDO2 () // 1-bit input: USER2 function
);
`else
`ifdef spartan6 `ifdef spartan6
BSCAN_SPARTAN6 #( BSCAN_SPARTAN6 #(
`else `else
@ -88,5 +116,6 @@ module spiOverJtag
.TDO (tdo) // 1-bit input: Test Data Output (TDO) input .TDO (tdo) // 1-bit input: Test Data Output (TDO) input
// for USER function. // for USER function.
); );
`endif
endmodule endmodule