const shop_data = { API_RFQ: 'https://hooks.m-labs.hk/rfq', mobileSideMenuShouldOpen: false, currentItemHovered: null, currentMode: 'rack', currency: 'USD', crateModeSlots: { rack: 21, desktop: 10, }, crateRules: { maxSlot: { type: 'crate', icon: '/shop/icon-warning.svg', color: '#c75e5e', name: 'Crate', message: 'You have reached the maximum number of slots allowed for this crate. Consider removing cards.', }, compactSlot: { type: 'crate', icon: '/shop/icon-reminder.svg', name: 'Crate', message: 'The selected cards fit in a 42hp desktop crate, consider switching to it for a more compact system', }, }, crateModeItems: [{ id: 'rack', name: 'Rack mountable crate', price: 550, }, { id: 'desktop', name: 'Desktop crate', price: 500, }], items: { /* keys are also ids, avoid changing them */ 'kasli': { id: 'kasli', name: 'Carrier', name_number: '1124', name_codename: 'Kasli 2.0', price: 3600, image: '/shop/graphic-03_kasli.svg', specs: [ 'FPGA core device, runs ARTIQ kernels, controls the EEMs.', '4 SFP 6Gb/s slots for Ethernet or DRTIO.', '12 EEM connectors.', '4 MMCX clock outputs.', 'Price includes bitstream generation, flashing, testing, and firmware updates for 1 year (USD 1,400.00).', ], size: 'big', type: 'kasli', hp: 8, nbrSlotMin: 0, nbrSlotMax: 12, nbrCurrentSlot: 0, nbrClockMax: 4, nbrCurrentClock: 0, slotOccupied: 1, clockOccupied: 0, options: [ {type: "Radio", args: {title: "Variant", outvar: "variant", variants: ["standalone", "master", "satellite"]}}, { "if": [ { "in": [ {"var": "variant"}, [ "master", "standalone" ] ] }, [ {type: "Line", args: {title: "IPv4", outvar: "ipv4", fallback: "192.168.1.75/24", tip: "Set up IPv4 address used by core device"}}, {type: "SwitchLine", args: {title: "IPv6", outvar: "ipv6"}}, {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}, tip: "Use external clock reference: 10, 80 (beta), 100 or 125 MHz. Other variants may be provided if needed."}}, {type: "Switch", args: {title: "Opt out from promotional USB-stick", outvar: "usb_opt_out", tip: "Do not ship a promotional USB-stick"}}, ], [ {type: "Switch", args: {title: "Optic fiber", outvar: "optics", tip: "Use optic fiber instead of direct attach copper cable"}} ] ] } ], rules: { maxSlot: { type: 'kasli-max-slot', icon: '/shop/icon-reminder.svg', name: 'Kasli', message: 'Insufficient EEM connectors.', }, maxSlotWarning: { type: 'kasli-max-slot-warning', icon: '/shop/icon-warning.svg', name: 'Kasli', message: 'Insufficient EEM connectors', }, maxClock: { type: 'kasli-max-clock', icon: '/shop/icon-reminder.svg', name: 'Kasli', message: 'Insufficient clock connectors. Kasli has at most 4 clock connections.', }, maxClockWarning: { type: 'kasli-max-clock-warning', icon: '/shop/icon-warning.svg', name: 'Kasli', message: 'Insufficient clock connectors.', }, follow: { type: 'kasli-follow', icon: '/shop/icon-reminder.svg', name: 'Kasli', message: 'Due to wiring constraints, a Kasli can only connect to EEM cards immediately at its right, without crossing another carrier.', }, }, }, 'kaslisoc': { id: 'kaslisoc', name: 'Carrier', name_number: '1125', name_codename: 'Kasli-SoC', price: 5100, image: '/shop/graphic-03_kaslisoc.svg', specs: [ 'Core device based on Zynq-7000 CPU+FPGA system-on-chip.', 'Runs ARTIQ kernels on 1GHz Cortex-A9 CPU with hardware FPU.', 'Enables high-speed matrix math on the core device.', 'Lower RTIO latency.', 'Higher network transfer speeds.', 'Dedicated RJ45 port for Gigabit Ethernet.', '4 SFP 12Gb/s slots for DRTIO.', '12 EEM connectors.', '4 MMCX clock outputs.', ], size: 'big', type: 'kasli', hp: 8, nbrSlotMin: 0, nbrSlotMax: 12, nbrCurrentSlot: 0, nbrClockMax: 4, nbrCurrentClock: 0, slotOccupied: 1, clockOccupied: 0, options: [ {type: "Radio", args: {title: "Variant", outvar: "variant", variants: ["standalone", "master", "satellite"]}}, { "if": [ { "in": [ {"var": "variant"}, [ "master", "standalone" ] ] }, [ {type: "Line", args: {title: "IPv4", outvar: "ipv4", fallback: "192.168.1.75/24", tip: "Set up IPv4 address used by core device"}}, {type: "SwitchLine", args: {title: "IPv6", outvar: "ipv6"}}, {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}, tip: "Use external clock reference: 10, 80 (beta), 100 or 125 MHz. Other variants may be provided if needed."}}, {type: "Switch", args: {title: "Opt out from promotional USB-stick", outvar: "usb_opt_out", tip: "Do not ship a promotional USB-stick"}}, ], [ {type: "Switch", args: {title: "Optic fiber", outvar: "optics", tip: "Use optic fiber instead of direct attach copper cable"}} ] ] } ], rules: { maxSlot: { type: 'kaslisoc-max-slot', icon: '/shop/icon-reminder.svg', name: 'Kasli-SoC', message: 'Insufficient EEM connectors.', }, maxSlotWarning: { type: 'kaslisoc-max-slot-warning', icon: '/shop/icon-warning.svg', name: 'Kasli-SoC', message: 'Insufficient EEM connectors', }, maxClock: { type: 'kaslisoc-max-clock', icon: '/shop/icon-reminder.svg', name: 'Kasli-SoC', message: 'Insufficient clock connectors. Kasli-SoC has at most 4 clock connections.', }, maxClockWarning: { type: 'kaslisoc-max-clock-warning', icon: '/shop/icon-warning.svg', name: 'Kasli-SoC', message: 'Insufficient clock connectors.', }, follow: { type: 'kaslisoc-follow', icon: '/shop/icon-reminder.svg', name: 'Kasli-SoC', message: 'Due to wiring constraints, a Kasli-SoC can only connect to EEM cards immediately at its right, without crossing another carrier.', }, }, }, 'vhdcicarrier': { id: 'vhdcicarrier', name: 'VHDCI Carrier', name_number: '1008', name_codename: '', price: 400, image: '/shop/graphic-03_VHDCI_carrier.svg', specs: [ 'Passive adapter between VHDCI and EEMs.', 'VHDCI (SCSI-3) cables can carry EEM signals over short distances between crates.', 'Bidirectional: can be driven by Kasli (contact us), or can drive other cards.', 'A pair of VHDCI carriers is a simple, low-latency and low-cost alternative to DRTIO for some applications.', ], size: 'big', type: 'vhdcicarrier', hp: 8, nbrSlotMin: 0, nbrSlotMax: 8, nbrCurrentSlot: 0, nbrClockMax: 0, nbrCurrentClock: 0, slotOccupied: 1, clockOccupied: 0, rules: { maxSlot: { type: 'vhdcicarrier-max-slot', icon: '/shop/icon-reminder.svg', name: 'VHDCI carrier', message: 'Insufficient EEM connectors.', }, maxSlotWarning: { type: 'vhdcicarrier-max-slot-warning', icon: '/shop/icon-warning.svg', name: 'VHDCI carrier', message: 'Insufficient EEM connectors', }, maxClock: { type: 'vhdcicarrier-max-clock', icon: '/shop/icon-reminder.svg', name: 'VHDCI carrier', message: 'The VHDCI carrier lacks clock connectors.', }, maxClockWarning: { type: 'vhdcicarrier-max-clock-warning', icon: '/shop/icon-warning.svg', name: 'VHDCI carrier', message: 'The VHDCI carrier lacks clock connectors.', }, follow: { type: 'vhdcicarrier-follow', icon: '/shop/icon-reminder.svg', name: 'VHDCI carrier', message: 'Due to wiring constraints, a VHDCI carrier can only connect to EEM cards immediately at its right, without crossing another carrier.', }, }, }, 'bnc-dio': { id: 'bnc-dio', name: 'BNC-TTL', name_number: '2118', name_codename: '', price: 450, image: '/shop/graphic-03_BNC-TTL.svg', specs: [ 'Two banks of four digital channels each, with BNC connectors.', 'Each bank with individual ground isolation.', 'Per-bank switchable direction.', 'Per-channel switchable 50 Ohm termination with LED indicators.', 'Short circuit tolerance: infinite.', 'Minimum pulse width: 3ns.', 'Max 150 MHz toggle rate with 50% duty cycle.' ], datasheet_file: '/docs/sinara-datasheets/2118-2128.pdf', datasheet_name: '2118/2128 BNC/SMA-TTL datasheet', size: 'big', type: null, hp: 8, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 0, options: [ { "if": [ {"var": "ext_data.has_other_dio"}, [ {type: "Switch", args: {title: "Output first bank", fallback: true, outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ], [ {type: "Switch", args: {title: "Output first bank", outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ] ] }, { "if": [ {"!": {"var": "out_first_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}}, {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}}, {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}}, {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}}, ]}, null ] }, {type: "Switch", args: {title: "Output second bank", outvar: "out_second_bank", fallback: true, tip: "Switch connectors 4-7 to output"}}, { "if": [ {"!": {"var": "out_second_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}}, {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}}, {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}}, {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}}, ]}, null ] } ], rules: { resources: { type: 'bnc-dio', icon: '/shop/icon-warning.svg', name: 'BNC-DIO', message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.', }, }, }, 'sma-dio': { id: 'sma-dio', name: 'SMA-TTL', name_number: '2128', name_codename: '', price: 400, image: '/shop/graphic-03_SMA-TTL.svg', specs: [ 'Same as above, but with SMA connectors.' ], datasheet_file: '/docs/sinara-datasheets/2118-2128.pdf', datasheet_name: '2118/2128 BNC/SMA-TTL datasheet', options: [ { "if": [ {"var": "ext_data.has_other_dio"}, [ {type: "Switch", args: {title: "Output first bank", fallback: true, outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ], [ {type: "Switch", args: {title: "Output first bank", outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ] ] }, { "if": [ {"!": {"var": "out_first_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}}, {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}}, {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}}, {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}}, ]}, null ] }, {type: "Switch", args: {title: "Output second bank", outvar: "out_second_bank", fallback: true, tip: "Switch connectors 4-7 to output"}}, { "if": [ {"!": {"var": "out_second_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}}, {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}}, {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}}, {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}}, ]}, null ] } ], size: 'small', type: null, hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 0, rules: { resources: { type: 'sma-dio', icon: '/shop/icon-warning.svg', name: 'SMA-DIO', message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.', }, }, }, 'mcx-dio': { id: 'mcx-dio', name: 'MCX-TTL', name_number: '2238', name_codename: '', price: 600, image: '/shop/graphic-03_MCX-TTL.svg', specs: [ '16 single-ended digital signals on MCX connectors.', 'Direction selectable in banks of four signals.', 'Termination individually selectable for each signal.', 'No galvanic isolation.', 'Higher speed and lower jitter than the isolated SMA and BNC DIO cards.' ], datasheet_file: '/docs/sinara-datasheets/2238.pdf', datasheet_name: '2238 MCX-TTL datasheet', options: [ { "if": [ {"var": "ext_data.has_other_dio"}, [ {type: "Switch", args: {title: "Output first bank", fallback: true, outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ], [ {type: "Switch", args: {title: "Output first bank", outvar: "out_first_bank", tip: "Switch connectors 0-3 to output"}} ] ] }, { "if": [ {"!": {"var": "out_first_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #0", outvar: "term_0", tip: "Enable termination on channel #0"}}, {type: "Switch", args: {title: "Termination #1", outvar: "term_1", tip: "Enable termination on channel #1"}}, {type: "Switch", args: {title: "Termination #2", outvar: "term_2", tip: "Enable termination on channel #2"}}, {type: "Switch", args: {title: "Termination #3", outvar: "term_3", tip: "Enable termination on channel #3"}}, ]}, null ] }, {type: "Switch", args: {title: "Output second bank", outvar: "out_second_bank", fallback: true, tip: "Switch connectors 4-7 to output"}}, { "if": [ {"!": {"var": "out_second_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #4", outvar: "term_4", tip: "Enable termination on channel #4"}}, {type: "Switch", args: {title: "Termination #5", outvar: "term_5", tip: "Enable termination on channel #5"}}, {type: "Switch", args: {title: "Termination #6", outvar: "term_6", tip: "Enable termination on channel #6"}}, {type: "Switch", args: {title: "Termination #7", outvar: "term_7", tip: "Enable termination on channel #7"}}, ]}, null ] }, {type: "Switch", args: {title: "Output third bank", outvar: "out_third_bank", fallback: true, tip: "Switch connectors 8-11 to output"}}, { "if": [ {"!": {"var": "out_third_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #8", outvar: "term_8", tip: "Enable termination on channel #8"}}, {type: "Switch", args: {title: "Termination #9", outvar: "term_9", tip: "Enable termination on channel #9"}}, {type: "Switch", args: {title: "Termination #10", outvar: "term_10", tip: "Enable termination on channel #10"}}, {type: "Switch", args: {title: "Termination #11", outvar: "term_11", tip: "Enable termination on channel #11"}}, ]}, null ] }, {type: "Switch", args: {title: "Output fourth bank", outvar: "out_fourth_bank", fallback: true, tip: "Switch connectors 12-15 to output"}}, { "if": [ {"!": {"var": "out_fourth_bank"}}, {type: "Group", items: [ {type: "Switch", args: {title: "Termination #12", outvar: "term_12", tip: "Enable termination on channel #12"}}, {type: "Switch", args: {title: "Termination #13", outvar: "term_13", tip: "Enable termination on channel #13"}}, {type: "Switch", args: {title: "Termination #14", outvar: "term_14", tip: "Enable termination on channel #14"}}, {type: "Switch", args: {title: "Termination #15", outvar: "term_15", tip: "Enable termination on channel #15"}}, ]}, null ] } ], size: 'small', type: null, hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 2, clockOccupied: 0, rules: { resources: { type: 'mcx-dio', icon: '/shop/icon-warning.svg', name: 'MCX-DIO', message: 'This card needs a card that provides two EEM connectors (e.g. Kasli) at its left.', }, }, }, 'rj45-dio': { id: 'rj45-dio', name: 'LVDS-TTL', name_number: '2245', name_codename: '', price: 390, image: '/shop/graphic-03_LVDS.svg', specs: [ 'Supplies 16 LVDS pairs via 4 front-panel RJ45 connectors.', 'Each RJ45 supplies 4 LVDS DIOs.', 'Direction individually selectable for each signal.', 'No galvanic isolation.', 'Higher speed and lower jitter than the isolated SMA and BNC DIO cards.' ], datasheet_file: '/docs/sinara-datasheets/2245.pdf', datasheet_name: '2245 LVDS-TTL datasheet', size: 'small', type: null, hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 2, clockOccupied: 0, rules: { resources: { type: 'rj45-dio', icon: '/shop/icon-warning.svg', name: 'RJ45-DIO', message: 'This card needs a card that provides two EEM connectors (e.g. Kasli) at its left.', }, }, }, 'urukul': { id: 'urukul', name: 'DDS', name_number: '4410', name_codename: 'Urukul', price: 2350, image: '/shop/graphic-03_Urukul.svg', specs: [ '4 channel 1GS/s DDS.', 'Output frequency (-3 dB): <1 to >400 MHz.', 'Nominal max output power 10 dBm.', 'Digital step attenuator 0 to -31.5dB.', 'RF switch (1ns temporal resolution), 70dB isolation.', 'AD9910 or AD9912 chip.', 'By default, we use the AD9910 as it provides more features. If you need the higher frequency resolution of the AD9912, leave us a note.', 'AD9910 and AD9912 cards can be used at the same time in the same crate.', 'External 5W power amplifier is available separately, leave us a note if interested.' ], datasheet_file: '/docs/sinara-datasheets/4410-4412.pdf', datasheet_name: '4410/4412 Urukul datasheet', options: [ {type: "Switch", args: {title: "AD9912", outvar: "ad9912", tip: "AD9912 chip instead of AD9910"}}, {type: "Switch", args: {title: "Use 1 EEM", outvar: "mono_eem", tip: "Use one EEM port setup. RF switch and synchronization will be unavailable."}}, { "if": [ {"or": [{"var": "ad9912"}, {"var": "mono_eem"}]}, [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}}, ], [ {type: "Switch", args: {title: "Synchronization", outvar: "sync", tip: "Synchronize phases across Urukuls"}}, { "if": [ {"var": "sync"}, null, [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}}, { "if": [ {"var": "ext_data.has_sampler"}, {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}}, null ] } ] ] } ] ] } ], size: 'small', type: 'urukul', hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 2, clockOccupied: 1, rules: { resources: { type: 'urukul', icon: '/shop/icon-warning.svg', name: 'Urukul', message: 'This card needs a card that provides EEM and clocking connectors (e.g. Kasli) at its left.', }, }, }, 'phaser': { id: 'phaser', name: 'AWG', name_number: '4624', name_codename: 'Phaser', price: 4260, image: '/shop/graphic-03_Phaser.svg', specs: [ '2x 1.25 GS/s IQ upconverters.', 'dual IQ mixer + 0.3 GHz to 4.8 GHz VCO + PLL.', '31.5 dB range digital step attenuator (similar to Urukul).', '2 channels of 5 MS/s ADC (similar to Sampler).', 'Artix-7 FPGA.', 'Internal MMCX clock from Kasli/Clocker and external SMA.', 'The upconverter is optional, if you would like the baseband version please leave us a note.' ], options: [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}} ], size: 'small', type: 'urukul', hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 1, rules: { resources: { type: 'phaser', icon: '/shop/icon-warning.svg', name: 'Phaser', message: 'This card needs a card that provides EEM and clocking connectors (e.g. Kasli) at its left.', }, }, }, 'zotino': { id: 'zotino', name: 'DAC', name_number: '5432', name_codename: 'Zotino', price: 1600, image: '/shop/graphic-03_Zotino.svg', specs: [ '32-channel DAC.', '16-bit resolution.', '1 MSPS shared between all channels.', 'Output voltage +-10V.', 'HD68 connector with all channels.', 'Channels can also be broken out to BNC or SMA using IDC-BNC, IDC-SMA or IDC-MCX cards.', 'DAC temperature can be stabilized using the Sinara 8451 Thermostat (sold separately).' ], datasheet_file: '/docs/sinara-datasheets/5432.pdf', datasheet_name: '5432 Zotino datasheet', size: 'small', type: 'zotino', hp: 4, nbrSlotMin: 0, nbrSlotMax: 4, nbrCurrentSlot: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 0, rules: { maxSlot: { type: 'zotino', icon: '/shop/icon-reminder.svg', name: 'Zotino', message: 'Zotino has at most 4 IDC-BNC adapters.', }, maxSlotWarning: { type: 'zotino-max-slot-warning', icon: '/shop/icon-warning.svg', name: 'Zotino', message: 'Insufficient connectors.', }, resources: { type: 'zotino', icon: '/shop/icon-warning.svg', name: 'Zotino', message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.', }, }, }, 'fastino': { id: 'fastino', name: 'DAC', name_number: '5632', name_codename: 'Fastino', price: 3390, image: '/shop/graphic-03_Fastino.svg', specs: [ '32-channel DAC.', '16-bit resolution.', '2 MSPS simultaneously on all channels (requires gateware acceleration).', 'Output voltage +-10V.', 'HD68 connector with all channels.', 'Channels can also be broken out to BNC or SMA using IDC-BNC, IDC-SMA or IDC-MCX cards.' ], size: 'small', type: 'zotino', hp: 4, nbrSlotMin: 0, nbrSlotMax: 4, nbrCurrentSlot: 0, nbrClockMax: 0, slotOccupied: 2, clockOccupied: 0, rules: { maxSlot: { type: 'fastino', icon: '/shop/icon-reminder.svg', name: 'Fastino', message: 'Fastino has at most 4 IDC-BNC adapters.', }, maxSlotWarning: { type: 'fastino-max-slot-warning', icon: '/shop/icon-warning.svg', name: 'Fastino', message: 'Insufficient connectors.', }, resources: { type: 'fastino', icon: '/shop/icon-warning.svg', name: 'Fastino', message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.', }, }, }, 'idc-bnc-adapter': { id: 'idc-bnc-adapter', name: 'BNC-IDC', name_number: '5518', name_codename: '', price: 160, image: '/shop/graphic-03_IDC-BNC-adapter.svg', specs: [ 'Breaks out analog signals from Zotino or HD68-IDC to BNC connectors.', 'Each card provides 8 channels.', 'Breaking out all 32 channels from a Zotino requires 4 IDC-BNC cards.' ], size: 'big', type: 'idc-bnc', hp: 8, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 0, rules: { wrong: { type: 'idc-bnc', icon: '/shop/icon-warning.svg', name: 'IDC-BNC', message: 'Should be after a Zotino or a HD68-IDC or with another IDC-BNC.', } }, }, 'idc-sma-adapter': { id: 'idc-sma-adapter', name: 'SMA-IDC', name_number: '5528', name_codename: '', price: 160, image: '/shop/graphic-03_SMA-IDC.svg', specs: [ 'Breaks out analog signals from Zotino or HD68-IDC to SMA connectors.', 'Each card provides 8 channels.', 'Breaking out all 32 channels from a Zotino requires 4 SMA-IDC cards.' ], size: 'small', type: 'idc-bnc', hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 0, rules: { wrong: { type: 'idc-sma', icon: '/shop/icon-warning.svg', name: 'SMA-IDC', message: 'Should be after a Zotino or a HD68-IDC or with another SMA-IDC.', } }, }, 'idc-mcx-adapter': { id: 'idc-mcx-adapter', name: 'MCX-IDC', name_number: '5538', name_codename: '', price: 160, image: '/shop/graphic-03_MCX-IDC.svg', specs: [ 'Breaks out analog signals from Zotino or HD68-IDC to MCX connectors.', 'Each card provides 8 channels.', 'Breaking out all 32 channels from a Zotino requires 4 MCX-IDC cards.' ], size: 'big', type: 'idc-bnc', hp: 8, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 0, rules: { wrong: { type: 'idc-mcx', icon: '/shop/icon-warning.svg', name: 'MCX-IDC', message: 'Should be after a Zotino or a HD68-IDC or with another MCX-IDC.', } }, }, 'hd68-idc-adapter': { id:'hd68-idc-adapter', name: 'HD68-IDC', name_number: '5568', name_codename: '', price: 150, image: '/shop/graphic-03_HD68.svg', specs: [ 'Connects an external HD68 cable to IDC-BNC, IDC-SMA or IDC-MCX cards.', ], size: 'small', type: 'hd68', hp: 4, nbrSlotMin: 1, nbrSlotMax: 4, nbrCurrentSlot: 0, nbrClockMax: 0, slotOccupied: 0, clockOccupied: 0, rules: { minAdapter: { type: 'hd68-min-adapter', icon: '/shop/icon-warning.svg', name: 'HD68-IDC', message: 'Need at least one IDC-BNC Adapter at its right.', }, maxSlot: { type: 'hd68-max-slot', icon: '/shop/icon-reminder.svg', name: 'HD68-IDC', message: null, }, maxSlotWarning: { type: 'hd68-max-slot-warning', icon: '/shop/icon-warning.svg', name: 'HD68-IDC', message: 'Insufficient connectors.', }, }, }, 'novo': { id: 'novo', name: 'Sampler', name_number: '5108', name_codename: '', price: 1600, image: '/shop/graphic-03_Sampler.svg', specs: [ '8-channel ADC.', '16-bit resolution.', '1.5 MSPS simultaneously on all channels.', 'When used with ARTIQ-Python driver, effective sample rate is lower.', 'Digitally programmable input gain.', 'Full-scale input ranges between +-10mV and +-10V.', 'Supports SU-Servo laser intensity stabilization servo in conjunction with Urukul.' ], options: [ {type: "Switch", args: {title: "1 EEM mode", outvar: "mono_eem"}}, { "if": [ {"and": [{"var": "ext_data.has_dds"}, {"!": {"var": "mono_eem"}}]}, {type: "Switch", args: {title: "SUServo mode", outvar: "suservo"}}, null ] } ], size: 'big', type: 'novo', hp: 8, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 2, clockOccupied: 0, rules: { resources: { type: 'novo', icon: '/shop/icon-warning.svg', name: 'Sampler', message: 'This card needs a card that provides EEM connectors (e.g. Kasli) at its left.', }, } }, 'koster': { id: 'koster', name: 'Grabber', name_number: '6302', name_codename: '', price: 550, image: '/shop/graphic-03_Grabber.svg', specs: [ 'Camera input interface card.', 'Supports some EMCCD cameras.', 'Allows image processing to occur in the FPGA with lower latency.', 'Existing stack supports summing over rectangular ROIs and reporting the result to ARTIQ kernels.', 'Camera signal is entirely processed in the Kasli FPGA.', ], options: [ {type: "Radio", args: {title: "Connectors", outvar: "n_eem", variants: ["1 EEM", "2 EEM", "3 EEM"], tip: "Number of EEM ports to use.", fallback: 1}}, ], size: 'small', type: 'koster', hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 2, clockOccupied: 0, rules: { resources: { type: 'koster', icon: '/shop/icon-warning.svg', name: 'Grabber', message: 'This card needs a card that provides EEM connectors (e.g. Kasli) at its left.', }, } }, 'clocker': { id: 'clocker', name: 'Clocker', name_number: '7210', name_codename: '', price: 525, image: '/shop/graphic-03_Clocker.svg', specs: [ 'Distribute a low jitter clock signal among cards.', '2 inputs.', '10 outputs including 4 SMAs.', 'Frequency up to 1GHz.', 'Low jitter <100fs RMS.' ], options: [ {type: "Switch", args: {title: "Ext CLK", outvar: "ext_clk"}}, {type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}} ], size: 'small', type: 'clocker', hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 6, slotOccupied: 1, clockOccupied: 1, rules: { maxClock: { type: 'clocker-max-clock', icon: '/shop/icon-reminder.svg', name: 'Clocker', message: 'Clocker has at most 6 clock connections.', }, maxClockWarning: { type: 'clocker-max-clock-warning', icon: '/shop/icon-warning.svg', name: 'Clocker', message: 'Insufficient clock connectors.', }, }, }, 'stabilizer': { id: 'stabilizer', name: 'DSP', name_number: '8452', name_codename: 'Stabilizer', price: 2000, image: '/shop/graphic-03_Stabilizer.svg', specs: [ 'CPU-based dual-channel fast servo.', '400MHz STM32H743ZIT6.', 'Dual 16bit ADC with x2, x5, x10 PGA (2MS/s).', '16bit AD5542A DAC (1us settling time).', '100Base-T Ethernet.', 'Can be controlled by Kasli or work stand-alone with PoE supply.' ], options: [ {type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}} ], size: 'small', type: null, hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 0, }, 'mirny': { id: 'mirny', name: 'Synthesizer', name_number: '4456', name_codename: 'Mirny', price: 2660, image: '/shop/graphic-03_Mirny.svg', specs: [ '4-channel Wide-band PLL/VCO-based microwave frequency synthesiser.', '53 MHz to >4 GHz.', 'Up to 13.6 GHz when using the mezzanine.', 'Much higher frequency resolution than Urukul.', 'Lower jitter and phase noise.', 'Large frequency changes take several milliseconds.', ], options: [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}} ], size: 'small', type: null, hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 1, rules: { resources: { type: 'mirny', icon: '/shop/icon-warning.svg', name: 'Mirny', message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.', }, }, }, 'almazny': { id: 'almazny', name: 'HF Synthesizer', name_number: '4457', name_codename: 'Mirny + Almazny', price: 3660, image: '/shop/graphic-03_Almazny.svg', specs: [ 'Mirny with high frequency mezzanine.', 'Additional 4 channels up to 12 GHz.', 'Each Almazny channel outputs twice the frequency of its corresponding Mirny channel.', ], options: [ {type: "SwitchLine", args: {title: "Ext CLK", outvar: "ext_clk", fallback: {text: "125 MHz", checked: false}}} ], size: 'big', type: null, hp: 8, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 1, rules: { resources: { type: 'almazny', icon: '/shop/icon-warning.svg', name: 'Almazny', message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.', }, } }, 'thermostat-eem': { id: 'thermostat-eem', name: 'Thermostat EEM', name_number: '8453', name_codename: '', price: 2600, image: '/shop/graphic-03_Thermostat-EEM.svg', specs: [ '4 TEC channels.', 'Sensor channel count: 8 differential, 16 single-ended.', 'Output HD44 DSUB connector.', 'Up to 8W (+/-2A with 4V compliance) heater/TEC drive from MAX1968 drivers.', 'Up to 16W (+4A 4V) from MAX1969 drivers.', '100Base-T Ethernet with PoE.' ], size: 'small', type: null, hp: 4, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 0 }, 'shuttler': { id: 'shuttler', name: 'DAC', name_number: '5716', name_codename: 'Shuttler', price: 8500, image: '/shop/graphic-03_Shuttler.svg', specs: [ '16-ch, 125 MSPS DAC EEM with remote analog front end board.', 'High DC resolution (up to ~18 bits with sigma-delta modulation) for trap electrode bias.', '~15MHz default analog bandwidth.', 'AD9117 DACs (14 bits @ 125 MSPS, <1 LSB DNL).', 'Differential analog output via mini-SAS HD with shielded impedance-matched pairs.', 'Included remote analog front-end (AFE) board converts differential signals to ±10V single-ended at the point of use, with additional gain and filtering.', ], size: 'big', type: null, hp: 8, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 1, rules: { resources: { type: 'shuttler', icon: '/shop/icon-warning.svg', name: 'Shuttler', message: 'This card needs a card that provides a EEM connector (e.g. Kasli) at its left.', }, } }, 'pounder': { id: 'pounder', name: 'PDH lock generator', name_number: '4459', name_codename: 'Stabilizer + Pounder', price: 4460, image: '/shop/graphic-03_Pounder.svg', specs: [ 'Stabilizer with Pounder daughter card.', '2-channel Pound Drever Hall (PDH) lock generator.', 'AD9959 DDS (500MSPS, 10-bit).' ], options: [ {type: "Switch", args: {title: "Ext power", outvar: "ext_pwr", "tip": "Use external power supply in order to reduce number of used EEM connectors"}} ], size: 'big', type: null, hp: 8, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 1, clockOccupied: 1, }, 'eem_pwr_mod': { id: 'eem_pwr_mod', name: 'EEM AC Power Module', name_number: '1106', name_codename: '', price: 750, image: '/shop/graphic-03_eem_pwr_mod.svg', specs: [ "EEM AC power module.", "400W with forced cooling (25CFM), 200W with free air convection.", "Universal input.", "IEC inlet on front panel.", "EMC filter.", "LED current indicator.", "6 rear side outputs.", "Mains circuit protected with steel cover.", "Optional - external power brick will be shipped free of charge if removed." ], size: 'big', type: null, hp: 8, nbrSlotMin: 0, nbrSlotMax: 0, nbrClockMax: 0, slotOccupied: 0, clockOccupied: 0, }, }, columns: { /*** * backlog is the column containing all items on left aside, * name should not change */ 'backlog': { id: 'backlog', title: 'Backlog', /* itemIds define items order - change order to suit your need */ categories: [ { name: 'Core', itemIds: [ 'kasli', 'kaslisoc']}, { name: 'TTL', itemIds: [ 'bnc-dio', 'sma-dio', 'mcx-dio', 'rj45-dio']}, { name: 'RF', itemIds: [ 'clocker', 'urukul', 'phaser', 'mirny', 'almazny', 'pounder']}, { name: 'DAC/ADC', itemIds: [ 'zotino', 'fastino', 'novo', 'shuttler']}, { name: 'Adapters', itemIds: [ 'idc-bnc-adapter', 'idc-sma-adapter', 'idc-mcx-adapter', 'hd68-idc-adapter', 'vhdcicarrier']}, { name: 'Misc', itemIds: [ 'koster', 'stabilizer', 'pounder', 'thermostat-eem', 'eem_pwr_mod', ]} ], }, 'cart': { id: 'cart', title: 'Cart', items: [], itemsData: [], }, }, rules: {}, }; window.shop_data = shop_data;