Closed SchrodingersGat closed 6 years ago
Some notes on the (currently unassigned) libs above
Rather than making new tables below, please make any adjustments (after discussion) to the table in the comment at the top.
Plural naming does not work well for everything. However I think that non-plural naming can work in all cases. Should we enforce a non-plural naming scheme or is anyone really passionate about plural names?
Examples of plurals that just sound wrong
I propose we name function_extra_sub, otherwise we get a weird combo of functions_extra_sub, _function_extrasubs
powerint.lib has most parts that are internal FET regulators, and also a few line discharging parts that I think go into ic_misc.lib
.
You need audio_misc.lib
or something like that for SRCs, mic preamps, etc.
Where do CODECs go? I assume audio_adc_dac.lib
, but what else would go there? Why not call it audio_codec.lib
?
More libraries are needed for SMPSs more. Break out DC-DC internal FET (regulators) from DC-DC external FET (controllers). We already have a lot of each. And generic SMPS controllers like UC3842 and NCP1200 deserve their own library. They're a different ballgame than integrated DC-DC parts. Lastly, where do PFC controllers go? They're a totally different type of IC (unless you're talking about single-stage flyback or oddball topologies like the Clark converter of PFC buck) and I think they should be in their own library.
Lastly, transformers are a total wasteland. I'd like to find a paradigm that works. I've tried 3 categorization schemes and none of them worked well for me. Does anybody have anything that works? It may take multiple libraries to cover AC line frequency, SMPS, gate drive, ethernet, and all other kinds of magnetics. Additionally, do coupled inductors go here or elsewhere? What about common mode chokes? Do those have their own libraries?
Some more comments:
audio_codec.lib
is fine with meregulators_switching_capacitance.lib
filters.lib
that could also contain other "filtering" components (most of them again fit the generic symbol, but some just might be different)??? Not sure about thattransformer_power.lib
(for larger ones, 220V->xyV) and transformers_small_signal.lib
or transformers_pulse.lib
(for audio, ethernet, ... is that the correct english name? I translated from the german "Überträger" using Wikipedia ;-)Best, JAN
+1 for singular.
There were suggested libraries starting quarz...
that I don't see in the table above. Would these better as piezo...
since the material used might be crystal or ceramic? Whether it's a filter or a resonator, it is the piezoelectric effect that they have in common. But if we stick with the suggested name, it should be quartz...
(I'm being very picky :wink:)
What will be left in device
if inductors move to a separate library as @jkriege2 suggests above? Just resistors and capacitors? If so, why not split into two libraries for clarity?
How about shortening microcontroller_
to mcu_
? Anyone using one ought to recognise the acronym.
peripheral
instead of periphery
?
mcu_
as a prefix (we already have soc_
and dsp_
processor_
be shortened to cpu_
?peripheral.lib
- the suggested contents of this library still seem very broad to me. Can we narrow this down?piezo / quart / etc - what is the function of this library (not the material it is made of!) Is it oscillators? Resonators? Other?
OK, I see that there have been edits on the other thread that prompted my comment :smile: : https://github.com/KiCad/kicad-library/issues/1398#issuecomment-313926433
That now suggests two libraries:
oscillators.lib (formerly: Oscillators.lib) quarzes_filters.lib (formerly: Oscillators.lib)
If oscillators.lib
is passive piezoelectric oscillating devices (i.e. standalone crystals, crystal resonators with built-in capacitors and ceramic resonators), that's good. But it should not IMHO include oscillator ICs.
Piezoelectric filters can be made of quartz crystal or ceramic material. So quartz_filters.lib
does not sit well with me.
After a quick look
audio_adc_adc.lib
-> audio_adc_dac.lib
sensor_multiple.lib
-> sensor_combined.lib
is probably a better name. Probably someone has a even better one@SchrodingersGat probably kicad-symbols
would be a more appropiate name for the repo than symbols
You may as well combine the NXP and Freescale processors to NXP or you will need to do it later.
@pointhi Can you please check you first bullet? It looks like the same lib name is repeated.
Unless someone objects, I volunteer to propose the divesting of the following libs:
@SchrodingersGat Is the above a "all edit" table? Or are we making suggestion with one person (you, I assume) as mediator and editor of the table?
Finished with analog_devices.lib, infineon.lib, and zetex.lib.
I like the idea of separate diode libraries IF the symbols are different. For example, regular Si diodes, Schottky/SiC, zener/TVS, etc. This will result in the least amount of unique symbols so it's the easiest to maintain.
In my opinion, there is no need for device specific symbols for such simple devices. Generic symbols are IMO enough. There is only several permutations with so few pins. Then splitting them does not make sense, they could all got to device.lib. At least my workflow is:
I have similar workflow for linear regulators, because in 70% cases, the one I choose to use is not in libs.
@evanshultz - @pointhi Can you please check you first bullet? It looks like the same lib name is repeated.
Read it again ;) It's a very subtle mistake that I made in the original table, which I have now fixed.
@SchrodingersGat Is the above a "all edit" table? Or are we making suggestion with one person (you, I assume) as mediator and editor of the table?
It's open to editing, but only after discussion here :) Please add edit comments at the end of the table as I have been doing, if you edit anything!
Currently the amplifier organization is pretty rough. What are some broad categorizations for amps?
@SchrodingersGat Er, I don't think others can edit the post. That's not how github works.
Sorry @gauravjuvekar you are completely correct - please ignore that. I forgot that I have special powers.
Update : Make suggestions and I will add them to the table :)
I think you need to be Member or Owner to edit a non-own post. JAN
Can we create separate rf_*
libs. I know that currently there aren't many rf components in the libs, but there are a large number of categories in rf out there.
Eg, see https://www.digikey.com/products/rf-wireless/en
I guess rf_{trasmitters, receivers, transceivers} could go in interface_rf
, but there are a lot of non-interface components like amplifiers, mixers, couplers, variable attenuators, active balun ICs, switches, etc.
@gauravjuvekar this is a good idea, I was only just thinking where antennae would go. I agree there is a place for rf_
libs separate from RF ICs
I think antenna should also be a separate library. It also has a lot of subdivisions (type: patch, chip, wire), surface / edge mounts, etc
@SchrodingersGat: some comments about amplifiers:
amplifier_current_sense
shouldn't/couldn't that go to sensor_current
?amplifier_difference
(for components like these: http://www.ti.com/lit/ds/symlink/ina157.pdf) ... basically OPAMPS, but with (calibrated) resistors insideamplifier_power
and/or amplifier_highvoltage
? (not so sure about these ... but there we could put e.g. opamps that also work at 100V ...)Just ideas ...
JAN
amplifier_current_sense shouldn't/couldn't that go to sensor_current?
I think that's fair.
I'm missing amplifier_difference (for components like these: http://www.ti.com/lit/ds/symlink/ina157.pdf) ... basically OPAMPS, but with (calibrated) resistors inside Also maybe amplifier_power and/or amplifier_highvoltage? (not so sure about these ... but there we could put e.g. opamps that also work at 100V ...)
I've added _difference
, _power
, and _rf
but I don't think that _highvoltage
is a category all on its own...
Added transformer categories.
will people know that amplifiers.lib
or ic_amplifiers.lib
contains OPAMPS? ... i.e. are all amplifiers OPAMPS or one of the others ...
JAN
What about (multi purpose) signal level translators and signal isolators? (currently they might go into the logic libs but i think giving them a separate lib might be a good idea.)
The symbols of the LEM.lib
could go into the sensor_current
lib.
Edit:
There is only one symbol in bosch.lib
that could go into sensor_motion
.
Another lib with only one symbol: contrib.lib
should go into one of the interface libs. (It is a modem) Maybe we would need some sort of interface_special
lib?
The symbols in brooktre.lib
are video interfaces. New lib interface_video
(or should we have one lib per video standard?)
Only a few symbols are in bbd.lib
. some could go into oscillator
but most might need a new lib called delay
(don't really know what these components are used for.)
The ftdi.lib
could be renamed into interface_converter
or we split it up.
amplifier_current_sense shouldn't/couldn't that go to sensor_current?
I disagree. The sensor is the part that actually senses the current. ICs like we see in linear.lib
now that are "current sense" parts are simply amplifying an external sensor, like a resistor or transformer/inductor winding. I do not think those ICs belong in sensor_current.lib
.
I also do not like having so many sub-categories for opamps. Why would you break out chopper-based amps? Their benefit is low input offset voltage, but you can get non-chopper amps with excellent performance here as well. It seems that we'd be splitting up parts which are otherwise interchangeable, cutting users off from seeing all opamp possibilities they might want to choose.
Gennum is now semtech
the gennum.lib
would need to be split up into multiple libs. (non of the symbols have a description which makes this a bit harder.)
graphic.lib
does not exist in the current master branch. It has been renamed to graphic_symbols.lib
(or has it been deleted and the graphic_symbols lib is a completely new lib?)
intel.lib
mostly into a new mcu_intel.lib
but also some into oscillator
, interface*
, ...
intersil.lib
either driver_gate
or driver_motor
maxim.lib
split up in many libs. (many temp sensors but also some other stuff.)
microchip.lib
mostly interface chips. (some gate drivers)
nordicsemi.lib
only one chip is in there. should go to interface_bluetooth
nxp.lib
some i2c led controllers and i2c multplexers
onsemi.lib
mostly esd_protection
but also transistor
philips.lib
mostly interfaces
Where should digital potis go?
Where should i2c, spi, ... io expander go?
should h-bridge drivers go into diver_gate
or driver_motor
?
At the rate at which sub-categories are being proposed, the library revision better have some kind of search tool across ALL libraries.
I am no op-amp expert and rely on others to tell me that part of a design, so I would not necessarily know which of the categories to look in for a part number I've been provided. I doubt I am alone in allowing other people with more specific expertise to dictate portions of my designs, I could see us getting very frustrated with so many finely sliced parts libraries. Right now, grep is my go to solution for this but I think less command line experienced people would prefer a built in tool.
When placing a part in eeschema the search field gives results in all libs.
Edit: After this reorganization they will be in less categories than they are now. Currently a lot of them are in manufacturer specific libs.
The note for connector lib:
Could be expaned in future e.g. connector_usb.lib / connectos_JST.lib
I don't think generic connectors need a specialized symbol. The only symbols we could add is for multi row connectors where each row has a separate connector on the wire side. Or for connectors that don't follow a pure numeric numbering scheme.
@poeschlr I would say:
ic_digpotentiometers
or digital_potentiometers
... there are so many that I think they deserve their own lib ... anotherpossibility (although not completely accurate would be dac.lib
)rtc.lib
, this would call for io_expanders.lib
... @SchrodingersGat :
timer.lib
?JAN
About OPAMPs: I wouldn't separate out the chopper-amps ... as far as I know they are (to the outside) like OPAMPs (they have In+, In- and VoltageOut .. possibly+control pins) ... but OTA-amplifiers, or transconductance amplifiers have a current output, not a voltage output ... shouldn't they be separated out?
@poeschlr I have applied your suggestions to the table, thanks :)
@jkriege2 I have added digital_potentiometer.lib
:) I think driver_motor
contains standalone motor controller ICs, while driver_gate
contains things like half/full-bridge drivers etc (they're used for more than just motors)
@jkriege2 what about timers like 8253, which are specifically designed as µC-periphery ... do they fit in timer.lib?
Yes, I'd expect so.
@SchrodingersGat about drivers: Just starting from the lib-name in driver_gate
I would expect driver-ICs that are used to drive the gate of a MOSFET, not half or full bridge drivers (although both might share the same functioning principle ...) ...
I scanned a bit the webpages of semiconductor manufacturers:
Most of them separate (at least) between:
I think we should use the same categories, e.g.
driver_motor
(for all motor-related products)driver_gate
(for ICs that are supposed to drive high-power MOSFETs/IGBTs)driver_load_other
or driver_load
for all othersmotor_controller
for motor-controll ICs like stepper-controllers or BLDC-controllers that do not necessarily contain drivers for the motor.Also I just stumbled about MCU-companion chips like RESET-ICs and voltage supervisors ... where to put those? periphery
?
What about the IO-expanders and other periphery that does not fit in any existing lib (yet)?
JAN
Reset ICs should go in power_supervisor.lib
- this lines up with how they are categorized on digikey.
I/O expanders (etc) are yet to be allocated. As no better name has been suggested, perhaps a series of peripheral_
libraries is needed.
+1 on both ;-)
interface_parallel.lib
would also be an option? + then we don't have to open up another "tree"periphery.lib
for everything that does not fit in any other category ...interface_spi.lib
+ interface_i2c.lib
most of ftdi
will also go to interface_usb
or interface_rs232
In that case, can periphery_uart
also go to interface_rs232
Also, where do we place peripherals like dma controllers / bus arbitrators / watchdog, etc
opto_isolator.lib
might not be the best name. (And opto maybe not the best category)
Opto is more the how is an isolator implemented than a functional description.
Maybe better would be isolator_opto
and further libs for each type of isolator. ('isolator_induction', 'isolator_capacitiv', ...)
But i don't like categorizing by internal technology. Yes inductive isolators tend to be used for signals with higher frequencies but there might be opto-isolators out there that can handle similar frequencies to cheap induction based isolators. (Or there are specialized induction based isolators for low frequency/ low power applications)
I would not split them up to be honest. maybe just isolator_digital
? (I don't think there are analog isolators. If they are ever invented or if a contributor finds one we can simply add a new lib called isolator_analog)
Another lib still missing is the level_translator
.
I personally would place the level translator and the isolator stuff either under logic or under their own signal translation category. (The later might be more future proof.)
Something similar with the display libs.
under display_lcd
there will be monchrome and color displays but also lc based segmented displays. Under display led i think there mitht be led bars, 7 segment, oled displays and in future maybe full color displays (TVs use leds already maybe in future there will not be lcds. also lcd display has a redundant display in it. it should be display_lc).
i would suggest the following function based lib names:
@poeschlr regarding the display_
libraries:
I think there are few enough symbols that display_led
and display_lcd
are OK (at least for now). We have to ensure that we don't over-specialize, creating too many libs.
If a certain library becomes too large we can always split further down the road.
opto_isolator.lib might not be the best name. (And opto maybe not the best category) Opto is more the how is an isolator implemented than a functional description.
Fair point. What about just isolator.lib
- if we find this has too many symbols we can later expand by sub-category.
Also I think we don't have any place for I2C transceivers/drivers/hubs and SPI switches/transceivers/... maybe interface_spi.lib + interface_i2c.lib
@jkriege2 can you give me some examples of what you mean by such components? :) It will help me to better understand their categorization.
I personally would place the level translator and the isolator stuff either under logic or under their own signal translation category. (The later might be more future proof.)
Should we add logic_translator.lib
for e.g. parts that are not covered by the 40xx and 74xx series?
@SchrodingersGat wrote:
I think there are few enough symbols that display_led and display_lcd are OK (at least for now). We have to ensure that we don't over-specialize, creating too many libs.
I really think led and lcd are bad names. There are lc based 14 segment displays and there are led based 14 segment displays. These would be in different libs if we split by technology.
If you only want to libs maybe the following might be a good split:
display_graphical
(Pixel based. Pixels spaced evenly across the display area. Can later be split into display_graphical_monocgrom
and display_graphical_color
)display_simple
(segment based, dot matrix, bars, ... Can later be split into display_bar,
display_segmented
, display_dot-matrix
)
Following on from the work by @jkriege2 here
allegro.lib-sensor_current.lib
analog_devices.lib(AD623/AD8236/AD42x to amplifier.lib [all int amps], ADE7758 to ic_misc.lib, ADuM6000 to regulator_switching.lib, ADuM7758 to interface???.lib)bbd.lib(all audio delay lines so audio_misc.lib)bosch.lib- move tosensor_motion.lib
brooktre.lib- move tointerface_video.lib
contrib.libmove to aninterface_<x>.lib
ftdi.lib- mostly tointerface_usb
gennum.lib- (all to video.lib: gs9020 is video processor, gs9025 is cable driver, and gs9032 is video serializer)infineon.lib(all to transistors.lib since they're just FETs with some protection built in)intel.lib- moves to multiple libs,mcu_intel.lib
, oscillator, interfaceintersil.lib- moves todriver_gate
,driver_motor
, etcir.lib(AU* parts to sensors_current.lib and all others to gate_driver.lib)LEM.lib- move tosensor_current.lib
maxim.lib- split into many libs. A lot of temperature sensor partsmicrochip.lib- mostly interface chipsnordicsemi.lib- tointerface_bluetooth
nxp.lib(all to interface_i2c.lib)onsemi.lib-esd_protection
/transistor
philips.lib- mostlyinterface_<x>
powerint.lib(CAP* parts to ic_misc.lib and all others to regulator_switching.lib)silabs.lib(cp2xxx to interface_usb.lib, si3210 to interface_telecom.lib? [it's an analog phone interface], the rest to the newly created interface_am_fm.lib)siliconi.lib(actually Siliconix parts; driver_motor.lib and analog_switch.lib)supertex.lib(reference_current.lib, power_distribution.lib, regulator_switching_converter.lib, regulator_linear.lib; see below)texas.lib(too big to write out here; see post by @evanshultz on 22 Jul below)wiznet.lib(to interface_ethernet.lib)Worldsemi.lib(to driver_led.lib)Xicor.lib(all to digital_pot.lib)zetex.lib(move to gate_drivers.lib)Edits
microcontroller_
tomcu_
audio_adc_adc.lib
->audio_adc_dac.lib
processor_
tocpu_
amplifier.lib
into multiple librariespower_distribution
,power_conditioning
,battery_management
power_
librariesrf_
libraries