ruby-adept 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/.travis.yml +6 -0
- data/Gemfile +10 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +16 -0
- data/adept.gemspec +33 -0
- data/autotest/discover.rb +2 -0
- data/bin/bprog +110 -0
- data/firmware/.gitignore +73 -0
- data/firmware/epp_stream/Basys2_100_250General.ucf +21 -0
- data/firmware/epp_stream/epp_controller.vhd +210 -0
- data/firmware/epp_stream/epp_stream.xise +355 -0
- data/firmware/epp_stream/fifo.vhd +178 -0
- data/firmware/epp_stream/tests/fifo_testbench.vhdl +164 -0
- data/lib/adept/boards/basys2.rb +84 -0
- data/lib/adept/boards.rb +2 -0
- data/lib/adept/connection_provider.rb +30 -0
- data/lib/adept/data_formats/bitstream.rb +116 -0
- data/lib/adept/data_formats/data_factories.rb +33 -0
- data/lib/adept/data_formats.rb +2 -0
- data/lib/adept/device.rb +127 -0
- data/lib/adept/error.rb +4 -0
- data/lib/adept/jtag/connection.rb +404 -0
- data/lib/adept/jtag/device.rb +178 -0
- data/lib/adept/jtag/devices/fpga.rb +162 -0
- data/lib/adept/jtag/devices/null.rb +0 -0
- data/lib/adept/jtag/devices/platform_flash.rb +23 -0
- data/lib/adept/jtag/devices.rb +2 -0
- data/lib/adept/jtag/error.rb +8 -0
- data/lib/adept/jtag/tap_state.rb +67 -0
- data/lib/adept/jtag/tap_states.rb +52 -0
- data/lib/adept/jtag.rb +11 -0
- data/lib/adept/low_level/connection.rb +59 -0
- data/lib/adept/low_level/device.rb +43 -0
- data/lib/adept/low_level/device_error.rb +22 -0
- data/lib/adept/low_level/device_manager.rb +142 -0
- data/lib/adept/low_level/enhanced_parallel.rb +151 -0
- data/lib/adept/low_level/error_handler.rb +60 -0
- data/lib/adept/low_level/jtag.rb +379 -0
- data/lib/adept/low_level/library.rb +173 -0
- data/lib/adept/low_level.rb +4 -0
- data/lib/adept/version.rb +3 -0
- data/lib/adept.rb +11 -0
- data/spec/firmware/epp_loopback.bit +0 -0
- data/spec/lib/adept/data_formats/bitstream_spec.rb +95 -0
- data/spec/lib/adept/data_formats/data_factories_spec.rb +42 -0
- data/spec/lib/adept/device_spec.rb +88 -0
- data/spec/lib/adept/jtag/connection_spec.rb +433 -0
- data/spec/lib/adept/jtag/device_spec.rb +107 -0
- data/spec/lib/adept/jtag/devices/fpga_spec.rb +71 -0
- data/spec/lib/adept/low_level/enhanced_parallel_spec.rb +72 -0
- data/spec/lib/adept/low_level/jtag_spec.rb +204 -0
- data/spec/spec_helpers.rb +25 -0
- metadata +240 -0
@@ -0,0 +1,204 @@
|
|
1
|
+
#
|
2
|
+
# These tests assume _one_ single connected Basys2 board!
|
3
|
+
#
|
4
|
+
|
5
|
+
require 'adept'
|
6
|
+
require 'adept/low_level'
|
7
|
+
|
8
|
+
#Pull the relevant modules into the main namespace, for convenience.
|
9
|
+
include Adept
|
10
|
+
|
11
|
+
#
|
12
|
+
# Specification for the low-level Adept JTAG interface.
|
13
|
+
# These tests assume _only_ one connected Basys2 board!
|
14
|
+
#
|
15
|
+
describe LowLevel::JTAG do
|
16
|
+
|
17
|
+
#
|
18
|
+
# Tests which do not require a connected Basys2 board.
|
19
|
+
#
|
20
|
+
describe "offline functionality" do
|
21
|
+
|
22
|
+
describe ".interleave_tms_tdi_byte_pairs" do
|
23
|
+
|
24
|
+
it "should be able to interleave a single byte of TMS/TDI data" do
|
25
|
+
|
26
|
+
#Since we're testing a private method, test from inside of the module.
|
27
|
+
LowLevel::JTAG.module_eval do
|
28
|
+
|
29
|
+
#Attempt to interleave the bytes. Note the little endian byte ordering.
|
30
|
+
tms, tdi = 0b1010_1011, 0b1100_1101
|
31
|
+
LowLevel::JTAG.interleave_tms_tdi_byte_pair(tms, tdi).should == [0b1101_1011, 0b1101_1000]
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
describe ".interlace_tms_tdi_byte_pairs" do
|
40
|
+
|
41
|
+
it "should be able to interleave two arrays of bytes into a single string" do
|
42
|
+
|
43
|
+
|
44
|
+
#Since we're testing a private method, test from inside of the module.
|
45
|
+
LowLevel::JTAG.module_eval do
|
46
|
+
|
47
|
+
tms = [0b1010_1011, 0b1111_0000]
|
48
|
+
tdi = [0b1100_1101, 0b0000_1111]
|
49
|
+
|
50
|
+
string = LowLevel::JTAG.interleave_tms_tdi_bytes(tms, tdi)
|
51
|
+
string.should == [0b1101_1011, 0b1101_1000, 0b0101_0101, 0b1010_1010].pack('C*').force_encoding('UTF-8')
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
#
|
62
|
+
# Tests which require a connectd Basys2-250K board.
|
63
|
+
#
|
64
|
+
describe "online functionality", :online => true do
|
65
|
+
|
66
|
+
#Before each test, create a connection to a Basys board
|
67
|
+
before :each do
|
68
|
+
@device = Adept::Device.by_name('Basys2')
|
69
|
+
end
|
70
|
+
|
71
|
+
#Close the Basys connection after each test.
|
72
|
+
after :each do
|
73
|
+
@device.close
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "pre-connection tests" do
|
77
|
+
|
78
|
+
it "should detect that a Basys2 board supports JTAG" do
|
79
|
+
LowLevel::JTAG.supported?(@device.handle).should be_true
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should detect exactly one JTAG port on a Basys2 board" do
|
83
|
+
LowLevel::JTAG.port_count(@device.handle).should == 1
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should detect that a Basys2 board supports set the JTAG connection speed" do
|
87
|
+
support = LowLevel::JTAG.supported_calls(@device.handle, 0)
|
88
|
+
support[:set_speed].should be_true
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should detect that a Basys2 board can't set the individual JTAG pins" do
|
92
|
+
support = LowLevel::JTAG.supported_calls(@device.handle, 0)
|
93
|
+
support[:set_pins].should be_false
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should be able to open a JTAG connection to the FPGA on a Basys 2" do
|
97
|
+
LowLevel::JTAG.EnableEx(@device.handle, 0)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should be able to _close_ a JTAG connection" do
|
101
|
+
LowLevel::JTAG.EnableEx(@device.handle, 0)
|
102
|
+
LowLevel::JTAG.Disable(@device.handle)
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "post-connection tests" do
|
108
|
+
|
109
|
+
#Create a new JTAG connection before each test.
|
110
|
+
before :each do
|
111
|
+
LowLevel::JTAG.EnableEx(@device.handle, 0)
|
112
|
+
end
|
113
|
+
|
114
|
+
#Disconnect from the JTAG device after each test.
|
115
|
+
after :each do
|
116
|
+
LowLevel::JTAG.Disable(@device.handle)
|
117
|
+
end
|
118
|
+
|
119
|
+
#
|
120
|
+
# To test each of the JTAG features below, we request that the devices in the scan chain
|
121
|
+
# identify themselves.
|
122
|
+
#
|
123
|
+
|
124
|
+
IDCode_Basys2_250K = "\xD5\x04\x50\x93"
|
125
|
+
IDCode_Platform_Flash = "\x11\xC1\xA0\x93"
|
126
|
+
|
127
|
+
it "should be able to send/recieve using interleaved byte strings" do
|
128
|
+
|
129
|
+
#Request that each of the devices identify themselves.
|
130
|
+
sequence = "\xAA\x22\x00"
|
131
|
+
|
132
|
+
#Send the command to the device...
|
133
|
+
LowLevel::JTAG.transmit_interleave(@device.handle, sequence, 9)
|
134
|
+
|
135
|
+
#And shift in zeroes, simultaneously recieving the device's ID codes.
|
136
|
+
response = LowLevel::JTAG.transmit_interleave(@device.handle, "\x00" * 16, 64)
|
137
|
+
|
138
|
+
#Check for the correct ID codes.
|
139
|
+
response.reverse.should == IDCode_Platform_Flash + IDCode_Basys2_250K
|
140
|
+
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
it "should be able to send/recieve using interleaved arrays of bytes" do
|
145
|
+
|
146
|
+
#Request that each of the devices identify themselves.
|
147
|
+
sequence = [0xAA, 0x22, 0x00] # 1010_1010, 0010_0010, 0000_0000; TMS = 1111 0101
|
148
|
+
|
149
|
+
#Send the command to the device...
|
150
|
+
LowLevel::JTAG.transmit_interleave(@device.handle, sequence, 9)
|
151
|
+
|
152
|
+
#And shift in zeroes, simultaneously recieving the device's ID codes.
|
153
|
+
response = LowLevel::JTAG.transmit_interleave(@device.handle, "\x00" * 16, 64)
|
154
|
+
|
155
|
+
#Check for the correct ID codes.
|
156
|
+
response.reverse.should == IDCode_Platform_Flash + IDCode_Basys2_250K
|
157
|
+
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should be able to send/recieve using linear arrays of bytes" do
|
161
|
+
|
162
|
+
#Request that each of the devices identify themselves.
|
163
|
+
#tms = [0x5F, 0x00] #1010 1010 = 1111 0101 ; 1010 1111
|
164
|
+
tdi = [0x00, 0x00]
|
165
|
+
|
166
|
+
tms = [0x09, 0x00]
|
167
|
+
|
168
|
+
#Send the command to the device...
|
169
|
+
LowLevel::JTAG.transmit(@device.handle, tms, tdi, 6)
|
170
|
+
|
171
|
+
#And shift in zeroes, simultaneously recieving the device's ID codes.
|
172
|
+
response = LowLevel::JTAG.transmit(@device.handle, "\x00" * 8, "\x00" * 8, 64)
|
173
|
+
|
174
|
+
#Check for the correct ID codes.
|
175
|
+
response.reverse.should == IDCode_Platform_Flash + IDCode_Basys2_250K
|
176
|
+
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should be able to accept more optimized transmit/recieve functions " do
|
180
|
+
|
181
|
+
#Request that each of the devices identify themselves.
|
182
|
+
LowLevel::JTAG.transmit(@device.handle, [0x09], false, 6)
|
183
|
+
|
184
|
+
#Recieve the device's ID codes.
|
185
|
+
response = LowLevel::JTAG.receive(@device.handle, false, false, 64)
|
186
|
+
|
187
|
+
#Check for the correct ID codes.
|
188
|
+
response.reverse.should == IDCode_Platform_Flash + IDCode_Basys2_250K
|
189
|
+
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should be able to set the speed of a JTAG connection" do
|
193
|
+
LowLevel::JTAG::set_speed(@device.handle, 62500).should == 62500
|
194
|
+
end
|
195
|
+
|
196
|
+
it "should be able to read the speed of a JTAG connection" do
|
197
|
+
actual_speed = LowLevel::JTAG::set_speed(@device.handle, 62500)
|
198
|
+
LowLevel::JTAG::get_speed(@device.handle).should == actual_speed
|
199
|
+
end
|
200
|
+
|
201
|
+
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
|
2
|
+
require 'adept'
|
3
|
+
|
4
|
+
module SpecHelpers
|
5
|
+
|
6
|
+
#Stores the path to the testing firmware files.
|
7
|
+
FirmwarePath = '../firmware'
|
8
|
+
|
9
|
+
#
|
10
|
+
# Loads a given piece of firmware onto a connected
|
11
|
+
#
|
12
|
+
def preload_firmware(filename, board_class=Boards::Basys2)
|
13
|
+
|
14
|
+
#Compute the relative path to the specified piece of firmware...
|
15
|
+
path = File.expand_path("#{FirmwarePath}/#{filename}.bit", __FILE__)
|
16
|
+
|
17
|
+
#... read the bitstream file at that path...
|
18
|
+
bitfile = DataFormats::Bitstream.from_file(path)
|
19
|
+
|
20
|
+
#... and program the file to the connected board.
|
21
|
+
board_class.open { |board| board.configure_fpga(bitfile) }
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,240 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby-adept
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kyle J. Temkin
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-01-29 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bindata
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: ruby-ise
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: trollop
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: smart_colored
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: ffi
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: require_all
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rspec
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: fakefs
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
description: ! "Ruby library for working with Digilent devices via the Adept SDK.\n
|
143
|
+
\ Provides both low-level wrappers for the Adept SDK elements and high-level\n
|
144
|
+
\ interfaces, including simple programming and configuration routines."
|
145
|
+
email:
|
146
|
+
- ktemkin@binghamton.edu
|
147
|
+
executables:
|
148
|
+
- bprog
|
149
|
+
extensions: []
|
150
|
+
extra_rdoc_files: []
|
151
|
+
files:
|
152
|
+
- .gitignore
|
153
|
+
- .travis.yml
|
154
|
+
- Gemfile
|
155
|
+
- LICENSE.txt
|
156
|
+
- README.md
|
157
|
+
- Rakefile
|
158
|
+
- adept.gemspec
|
159
|
+
- autotest/discover.rb
|
160
|
+
- bin/bprog
|
161
|
+
- firmware/.gitignore
|
162
|
+
- firmware/epp_stream/Basys2_100_250General.ucf
|
163
|
+
- firmware/epp_stream/epp_controller.vhd
|
164
|
+
- firmware/epp_stream/epp_stream.xise
|
165
|
+
- firmware/epp_stream/fifo.vhd
|
166
|
+
- firmware/epp_stream/tests/fifo_testbench.vhdl
|
167
|
+
- lib/adept.rb
|
168
|
+
- lib/adept/boards.rb
|
169
|
+
- lib/adept/boards/basys2.rb
|
170
|
+
- lib/adept/connection_provider.rb
|
171
|
+
- lib/adept/data_formats.rb
|
172
|
+
- lib/adept/data_formats/bitstream.rb
|
173
|
+
- lib/adept/data_formats/data_factories.rb
|
174
|
+
- lib/adept/device.rb
|
175
|
+
- lib/adept/error.rb
|
176
|
+
- lib/adept/jtag.rb
|
177
|
+
- lib/adept/jtag/connection.rb
|
178
|
+
- lib/adept/jtag/device.rb
|
179
|
+
- lib/adept/jtag/devices.rb
|
180
|
+
- lib/adept/jtag/devices/fpga.rb
|
181
|
+
- lib/adept/jtag/devices/null.rb
|
182
|
+
- lib/adept/jtag/devices/platform_flash.rb
|
183
|
+
- lib/adept/jtag/error.rb
|
184
|
+
- lib/adept/jtag/tap_state.rb
|
185
|
+
- lib/adept/jtag/tap_states.rb
|
186
|
+
- lib/adept/low_level.rb
|
187
|
+
- lib/adept/low_level/connection.rb
|
188
|
+
- lib/adept/low_level/device.rb
|
189
|
+
- lib/adept/low_level/device_error.rb
|
190
|
+
- lib/adept/low_level/device_manager.rb
|
191
|
+
- lib/adept/low_level/enhanced_parallel.rb
|
192
|
+
- lib/adept/low_level/error_handler.rb
|
193
|
+
- lib/adept/low_level/jtag.rb
|
194
|
+
- lib/adept/low_level/library.rb
|
195
|
+
- lib/adept/version.rb
|
196
|
+
- spec/firmware/epp_loopback.bit
|
197
|
+
- spec/lib/adept/data_formats/bitstream_spec.rb
|
198
|
+
- spec/lib/adept/data_formats/data_factories_spec.rb
|
199
|
+
- spec/lib/adept/device_spec.rb
|
200
|
+
- spec/lib/adept/jtag/connection_spec.rb
|
201
|
+
- spec/lib/adept/jtag/device_spec.rb
|
202
|
+
- spec/lib/adept/jtag/devices/fpga_spec.rb
|
203
|
+
- spec/lib/adept/low_level/enhanced_parallel_spec.rb
|
204
|
+
- spec/lib/adept/low_level/jtag_spec.rb
|
205
|
+
- spec/spec_helpers.rb
|
206
|
+
homepage: http://www.github.com/ktemkin/ruby-adept
|
207
|
+
licenses: []
|
208
|
+
post_install_message:
|
209
|
+
rdoc_options: []
|
210
|
+
require_paths:
|
211
|
+
- lib
|
212
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
213
|
+
none: false
|
214
|
+
requirements:
|
215
|
+
- - ! '>='
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: '0'
|
218
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
219
|
+
none: false
|
220
|
+
requirements:
|
221
|
+
- - ! '>='
|
222
|
+
- !ruby/object:Gem::Version
|
223
|
+
version: '0'
|
224
|
+
requirements: []
|
225
|
+
rubyforge_project:
|
226
|
+
rubygems_version: 1.8.23
|
227
|
+
signing_key:
|
228
|
+
specification_version: 3
|
229
|
+
summary: Framework for working with Digilent Adept devices.
|
230
|
+
test_files:
|
231
|
+
- spec/firmware/epp_loopback.bit
|
232
|
+
- spec/lib/adept/data_formats/bitstream_spec.rb
|
233
|
+
- spec/lib/adept/data_formats/data_factories_spec.rb
|
234
|
+
- spec/lib/adept/device_spec.rb
|
235
|
+
- spec/lib/adept/jtag/connection_spec.rb
|
236
|
+
- spec/lib/adept/jtag/device_spec.rb
|
237
|
+
- spec/lib/adept/jtag/devices/fpga_spec.rb
|
238
|
+
- spec/lib/adept/low_level/enhanced_parallel_spec.rb
|
239
|
+
- spec/lib/adept/low_level/jtag_spec.rb
|
240
|
+
- spec/spec_helpers.rb
|