On 07/04/16 18:45, Hartley Sweeten wrote:
On Thursday, April 07, 2016 9:48 AM, Hartley Sweeten wrote:
On Thursday, April 07, 2016 3:16 AM, Ian Abbott wrote:
On 06/04/16 19:06, H Hartley Sweeten wrote:
The "hc" type boards have 64 analog input channels with a 64 entry queue.
All the others have 16 channels and a 256 entry queue.
Currently the boardinfo 'qram_len' is used to initialize the subdevice
'n_chan' and 'len_chanlist'. This works for the 64 channel boards but
sets the 'n_chan' wrong for the 16 channel boards.
I think the 256 QRAM positions is to allow use with a set of EXP-1800
boards, each of which can multiplex one of the single-ended inputs of
the DAS-1800 series into 16 channels. According to the user's guide,
they can be daisy chained to provide up to 256 channels.
Datasheet:
http://www.tek.com/sites/tek.com/files/media/media/resources/exp-1800_ds.pdf
User's Guide download page (need to fill in contact info!):
http://www.tek.com/manual/exp-1800-users-guide-92160b-manual
So it's probably best to leave the number of channels alone.
Finally able to get the user's guide to download.
The EXP-1800 support looks like it will need additional changes to the driver
in order to work correctly. According to the data sheet:
1) all board input channels must be configured as single-ended,
EXP-1800 inputs can be single-ended or differential. Not sure how
the board needs to be programmed to achieve this.
2) only gains of 1 and 50 are selectable on a per-channel basis
3) resolution is 12-bit, not clear how this works on a 16-bit board
4) max ai speed depends on the EXP-1800 gain not the board
gain 1 = 312kHz sample rate
gain 50 = 150kHz sample rate
5) gain must be the same on all channels and the boards gain must be 1
Additionally, it's not clear how the channel mapping works for each
EXP-1800 connected to a board input channel.
The channel mapping is a bit warped as far as comedi is concerned.
Each EXP-1800 is jumper configured for what board input channel will
be used to return the 16 channels on the EXP-1800. The hi bits of the
QRAM are output to the EXP-1800 boards to select the channel as the
MUX4-7 pins on the connector.
Channel mapping looks like this:
On-board channel 0 EXP-1800 logical channels 0 to 15
On-board channel 1 EXP-1800 logical channels 16 to 31
...
On-board channel 15 EXP-1800 logical channels 240 to 255
So it looks like the QRAM 'channel' (i.e. the comedi channel) to physical
channel mapping goes:
channel 0 On-board channel 0 / EXP-1800 logical channel 0
channel 1 On-board channel 1 / EXP-1800 logical channel 16
channel 2 On-board channel 2 / EXP-1800 logical channel 32
channel 3 On-board channel 3 / EXP-1800 logical channel 48
channel 4 On-board channel 4 / EXP-1800 logical channel 64
channel 5 On-board channel 5 / EXP-1800 logical channel 80
channel 6 On-board channel 6 / EXP-1800 logical channel 96
channel 7 On-board channel 7 / EXP-1800 logical channel 112
channel 8 On-board channel 8 / EXP-1800 logical channel 128
channel 9 On-board channel 9 / EXP-1800 logical channel 144
channel 10 On-board channel 10 / EXP-1800 logical channel 160
channel 11 On-board channel 11 / EXP-1800 logical channel 176
channel 12 On-board channel 12 / EXP-1800 logical channel 192
channel 13 On-board channel 13 / EXP-1800 logical channel 208
channel 14 On-board channel 14 / EXP-1800 logical channel 224
channel 15 On-board channel 15 / EXP-1800 logical channel 240
channel 16 On-board channel 0 / EXP-1800 logical channel 1
channel 17 On-board channel 1 / EXP-1800 logical channel 17
...
channel 254 On-board channel 14 / EXP-1800 logical channel 239
channel 255 On-board channel 15 / EXP-1800 logical channel 255
It's not entirely clear that's the case, as that table appears in the
section called "When using DAS Boards with ASO Software" and refres to
the channels as "software (logical) channels".
The section called "When using DriverLINX Software (DAS or KPCI Boards)"
says, "The channel numbers assigned to the EXP are different under ASO
than they are under DriverLINX." Figure C-2 shows the channel mapping
under the DriverLINX software. It shows channels 0 to 15 as the onboard
channels, channels 16 to 31 as the EXP-1800 channels connected to
onboard channel 0, channels 32 to 63 as the EXP-1800 channels connected
to onboard channel 1, ..., channels 256 to 271 as the EXP-1800 channels
connected to onboard channel 15.
The DriverLINX mapping has up to 272 channels, but of course, there are
only 256 QRAM positions, so this doesn't really give a clue to the
actual mapping of channels to QRAM positions when EXP-1800 boards are
connected.
So if no EXP-1800 boards are used the comedi channel matches the
on-board channel. But, if any EXP-1800 boards are used the comedi
channel to physical channel gets all screwy. Just using one EXP-1800
board connected to on-board channel 0 results in this comedi channel
map for the 32 'usable' channels:
channel 0 EXP-1800 logical channel 0
channel 1 On-board channel 1
channel 2 On-board channel 2
channel 3 On-board channel 3
channel 4 On-board channel 4
channel 5 On-board channel 5
channel 6 On-board channel 6
channel 7 On-board channel 7
channel 8 On-board channel 8
channel 9 On-board channel 9
channel 10 On-board channel 10
channel 11 On-board channel 11
channel 12 On-board channel 12
channel 13 On-board channel 13
channel 14 On-board channel 14
channel 15 On-board channel 15
channel 16 EXP-1800 logical channel 1
channel 32 EXP-1800 logical channel 2
channel 48 EXP-1800 logical channel 3
channel 64 EXP-1800 logical channel 4
channel 80 EXP-1800 logical channel 5
channel 96 EXP-1800 logical channel 6
channel 112 EXP-1800 logical channel 7
channel 128 EXP-1800 logical channel 8
channel 144 EXP-1800 logical channel 9
channel 160 EXP-1800 logical channel 10
channel 176 EXP-1800 logical channel 11
channel 192 EXP-1800 logical channel 12
channel 208 EXP-1800 logical channel 13
channel 224 EXP-1800 logical channel 14
channel 240 EXP-1800 logical channel 15
I think it's better to set the number of channels to 16 and just support
the on-board analog inputs for now. Once the EXP-1800 support is
figured out it can be added.
I'd say it's better to leave the channel mapping as is, in case someone
already figured it out. Presumably, they could try reading each of the
256 channels to see which ones are actually connected.
There is also the issue with the gain when using an EXP-1800 board.
For now I think limiting the channels to 16 is the best option.
The external gain multiplier bit (GEXT) should be easy to support. For
the EXP-1800, the external gain multiplier will be 1 or 50, depending on
the state of this bit. I suppose other external boards might interpret
the GEXT bit differently, but I'm not aware of any.
Also, the driver doesn't state that the EXP-1800 boards are supported.
I'm not sure the author (Frank Mori Hess) actually thought about or
tested it when he originally wrote the driver.
I don't know if Frank tried an EXP-1800 either, but I just added him to
the Cc list. (It may be so long ago that he can't remember either!)
--
-=( Ian Abbott @ MEV Ltd. E-mail: <abbo...@mev.co.uk> )=-
-=( Web: http://www.mev.co.uk/ )=-
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel