X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=shakti%2Fm_class%2Fpinmux.mdwn;h=58752bb61aad425760391c3fe64fd11424468791;hb=93c4e3d5a654faa4941ace2316b47ec71fcd229a;hp=8ab14300691a3aef4ed70e5fbfda03d72be374d2;hpb=09a4785215871d208db2fe22caac45f46a2b4650;p=libreriscv.git diff --git a/shakti/m_class/pinmux.mdwn b/shakti/m_class/pinmux.mdwn index 8ab143006..58752bb61 100644 --- a/shakti/m_class/pinmux.mdwn +++ b/shakti/m_class/pinmux.mdwn @@ -6,8 +6,9 @@ is a Watchdog Timer and others. * Pinmux ("IOF") for multiplexing several I/O functions onto a single pin +* - implementation by Shakti RISE Group -Complex! +Surprisingly complex! # Requirements @@ -18,16 +19,38 @@ optional pull-up and pull-down resistors, in an IDENTICAL fashion to that of ALL major well-known embedded SoCs from ST Micro, Cypress, Texas Instruments, NXP, Rockchip, Allwinner and many many others". +* The IO pad shall have pull-up enable, pull-down enable, variable + frequency de-bounce (schmidt trigger), tri-state capability, + variable current drive (on input), Open Drain and CMOS Push-Push. +* Certain functions shall have the ability to control whether + IO pads will be input or output (not the GPIO registers). +* Number of wires shall be minimised especially in cases where + the IO pad (puen, oe) need to change under the control of the + function (not the GPIO registers). +* The amount of latency (gates in between I/O pad and function) + shall be minimised +* There shall be no short-circuits created by multiple input + pins trying to drive the same input function +* There shall be no short-circuits even when functions control + when the IO pad is an input. + ## Analysis Questions: -* Can damage occur by outputs being short-circuited to outputs in any way? +* Can damage occur (to the ASIC) by outputs being short-circuited to outputs + in any way? A partial analysis showed that because outputs are one-to-many, there should not be a possibility for that to occur. However what if a function is bi-directional? * Is de-bouncing always needed on every input? Is it ok for de-bouncing to be only done on EINT? +* Can the input mux be turned round and "selector" logic added so that + there is no possibility of damage to inputs? + +# Images + +* [[mygpiomux.jpg]] # GSoC2018 @@ -39,6 +62,19 @@ Introductions: lots of different stuff. Guardian of the EOMA68 Certification Mark, and currently responsible for coordinating the design of a fully Libre RISC-V SoC in collaboration with the RISE Group, IIT Madras, Shakti Project. + not much experience at verilog (have done a couple of tutorials). +* Xing GUO(xing) - undergraduate (3rd year) from Southeast + University, EE student, C/C++, Python, Verilog, assembly (not very proficient), + Haskell (not very proficient). RTL design, server maintenance. + E-mail: higuoxing at gmail dot com, Github: [Higuoxing](https://github.com/higuoxing) some of my projects are there :) +* Aurojyoti Das(auro) - graduate student (MSc Electrical - Microelectronics) + at TU Delft, Netherlands. C/C++, Verilog, VHDL, SystemVerilog, RTL Design, + Logic Verification, Python/Perl/Shell scripting, Analog IC Design (currently learning) + +Hardware available: + +* lkcl: ZC706 +* xing: zynq-7020 and Xilinx XC7A100T-484 # Discussion and Links @@ -46,6 +82,14 @@ Introductions: * * +# Some Useful Resource +* Interactive tutorial on Scala and Chisel (best one, take it, trust me!) +* A brief Scala tutorial +* A brief Chisel tutorial +* auto-generated test module for verilog +* described here +* - SVunit - unit testing for verilog + # Pinouts Specification Covered in [[pinouts]]. The general idea is to target several