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

Reply via email to