Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
builderpages:muellerk:multicomp_july_2019 [2019/12/03 10:38]
muellerk
builderpages:muellerk:multicomp_july_2019 [2019/12/15 08:16] (current)
muellerk
Line 1: Line 1:
 ====== Multicomp with larger FPGA ====== ====== Multicomp with larger FPGA ======
  
-{{https://​retrobrewcomputers.org/​lib/​plugins/​ckgedit/​fckeditor/​userfiles/​image/​builderpages/​muellerk/​multicomp-cycloneiv-july2019_800x60.jpg?​nolink&​384x288|retrobrewcomputers.org_lib_plugins_ckgedit_fckeditor_userfiles_image_builderpages_muellerk_multicomp-cycloneiv-july2019_800x60.jpg}}+{{https://​retrobrewcomputers.org/​lib/​plugins/​ckgedit/​fckeditor/​userfiles/​image/​builderpages/​muellerk/​multicomp-cycloneiv-july2019_800x600.jpg?​nolink&​405x303|Multicomp with extra boards plugged in}}
  
 ===== History ===== ===== History =====
  
-In June this year I got a link from a forum member regarding CycloneIV boards on AliExpress. I followed the link and was very surprised to find besides the "​old" ​cycloneIV board a newer one with much [[https://​www.aliexpress.com/​item/​32949281189.html?​gps-id=pcDetailBottomMoreOtherSeller&​scm=1007.13338.132444.000000000000000&​scm_id=1007.13338.132444.000000000000000&​scm-url=1007.13338.132444.000000000000000&​pvid=6df0c186-ae5f-4874-9813-c43129f02943|larger FPGA (EP4CE15F22N8)]] offered for a reasonable price (board size:​8×6.4cm^2,​ round about half the size of my Multicomp !). That was the start for a new project: To rework my multicomp. Six weeks later, the German customs send me a letter, claiming the unpaid tax (19%). Ok, the bought boards are in Germany… It took me 4 hours to drive to their office, pay the tax and get back to my home… Why 4 hours: It's a small customs office in a also small town. The physical drawback: 1 hour local customs time is 2 hours real-time, time is relative…+In June this year I got a link from a forum member regarding CycloneIV boards on AliExpress. I followed the link and was very surprised to find besides the "​old" ​CycloneIV system ​a newer one with much [[https://​www.aliexpress.com/​item/​32949281189.html?​gps-id=pcDetailBottomMoreOtherSeller&​scm=1007.13338.132444.000000000000000&​scm_id=1007.13338.132444.000000000000000&​scm-url=1007.13338.132444.000000000000000&​pvid=6df0c186-ae5f-4874-9813-c43129f02943|larger FPGA (EP4CE15F22N8)]] offered for a reasonable price (board size:​8×6.4cm^2,​ round about half the size of my Multicomp !). That was the start for a new project: To rework my Multicomp. Six weeks later, the German customs send me a letter, claiming the unpaid tax (19%). Ok, the bought boards are in Germany… It took me 4 hours to drive to their office, pay the tax and get back to my home… Why 4 hours: It's a small customs office in a also small town. The physical drawback: 1 hour local customs time is 2 hours real-time, time is relative…
  
 ===== Introduction ===== ===== Introduction =====
Line 18: Line 18:
   * A better reachable Reset-Button (Sorry, I need that, I too often crash the system… ;-) )   * A better reachable Reset-Button (Sorry, I need that, I too often crash the system… ;-) )
   * A I2C-Port for my Swiss-Pi board (I2C-Controller in VHDL)   * A I2C-Port for my Swiss-Pi board (I2C-Controller in VHDL)
-  * A GPIO-Port for connecting a peripheral board (same size as the mainboard) ​located ​below the Multicomp board (that'​s the idea) Meanwhile I'​ve ​dropped that idea and created instead ​a Joystick-board for 2 joysticks (thumb-Sticks),​ some switches, buttons, LED's and a 10-bit GPIO Port to plug onto to 40-pin GPIO header TOP-side. If the 2nd PIO is needed, its Pin-Socket should be swapped to the bottom side so the PIO-PCB is located below the Multicomp-PCB. That gives a nice 3-level sandwich construction… ​;-) As I said, things may change - that's now my idea. Your intension may differ - you are free to do so !+  * A GPIO-Port for connecting a peripheral board located ​on TOP or BOTTOM of the Multicomp board (that'​s the idea) Meanwhile I've a Joystick-board for 2 joysticks (thumb-Sticks),​ some switches, buttons, LED's and a 10-bit GPIO Port to plug onto to 40-pin GPIO header TOP-side. If the 2nd PIO is needed, its Pin-Socket should be swapped to the bottom side so the PIO-PCB is located below the Multicomp-PCB. That gives a nice 3-level sandwich construction… Your intension may differ - you are free to do so or not !
   * Two +12V DC power jacks (for Input & output), so I can chain the power for Monitor and Multicomp to one power supply (my monitor needs +12V)   * Two +12V DC power jacks (for Input & output), so I can chain the power for Monitor and Multicomp to one power supply (my monitor needs +12V)
-  * A additional +5V //​__OUTPUT-__// ​ Jack to connect __//​LOW//​__ ​ -power experimental boards at the back side of the board. The +5V regulator ​needs then a heat sink, definitely ​! It's possible to use the +5V jack at the front side (as //​__OUTPUT__// ​ only) of the FPGA board.+  * A additional +5V //​__OUTPUT-__// ​ Jack to connect __//​LOW//​__ ​ -power experimental boards at the rear side of the board. The +5V regulator ​should have a heat sink for better cooling ​! It's possible to use the +5V jack at the front side (as //​__OUTPUT__// ​ only) of the FPGA board.
   * A MAX705 Reset/​Power-Fail IC for the RESET-Button and for monitoring the +5V when power is switched ON/OFF ( I had some troubled with a destroyed SD-Card image, therefore the MAX705).   * A MAX705 Reset/​Power-Fail IC for the RESET-Button and for monitoring the +5V when power is switched ON/OFF ( I had some troubled with a destroyed SD-Card image, therefore the MAX705).
       * //​**REMARK:​**// ​ If the system is already switched ON and running don't connect a external board with large capacitors to the +5V jacks. The MAX705 may detect a Power-Fail situation when the voltage drops below +4.65V and will reset the system !       * //​**REMARK:​**// ​ If the system is already switched ON and running don't connect a external board with large capacitors to the +5V jacks. The MAX705 may detect a Power-Fail situation when the voltage drops below +4.65V and will reset the system !
Line 37: Line 37:
 Meanwhile the number increases to 3: Meanwhile the number increases to 3:
  
-  - Swiss-Pi Adapter PCB (I<​sup>​2</​sup> ​  C) with EEProm and I<​sup>​2</​sup> ​  C Clock (to install the clock module on the adapter PCB is very easy. You have to drill some 1mm holes and glue the module top down with double sided tape on the PCB and solder 4 wires to connect it to J1 (That'​s the way i've done it myself). I will upload some photos later on. <​del>​The new PCB layout is already prepared for the added clock module.</​del> ​ I've dropped the layout, because there are too many different DS3231 PCB-Versions out there with different signal routing to the pin header. So, the 4…6 hand-drilled-hole-solution is the best. You can order a PCB batch (3 pcs.) if you want [[https://​aisler.net/​p/​LTRMQETA|here]].+  - Swiss-Pi Adapter PCB (I<​sup>​2</​sup> ​  C) with EEProm and I<​sup>​2</​sup> ​  C Clock (to install the clock module on the adapter PCB is very easy. You have to drill some 1mm holes and glue the module top down with double sided tape on the PCB and solder 4 wires to connect it to J1 (That'​s the way i've done it myself). I will upload some photos later on. <​del>​The new PCB layout is already prepared for the added clock module.</​del> ​ I've dropped the layout, because there are too many different DS3231 PCB-Versions out there with different signal routing to the pin header. So, the 4…6 hand-drilled-hole-solution is the best. Links to Modules are [[https://​www.ebay.de/​itm/​DS3231-RTC-Real-Time-Clock-Echtzeituhr-Modul-for-Arduino-Raspberry-Pi-I2C-CR1220/​274047768609?​hash=item3fce851821:​g:​DEIAAOSw2bRd5Mfn|here]] and [[https://​www.ebay.de/​itm/​RTC-DS3231-I2C-Echtzeituhr-AT24C32-Real-Time-Clock-Modul-Arduino-Raspberry-Pi/​253651685225?​hash=item3b0ed18f69:​g:​jAcAAOSwHORb4Yjp|here]],​ for example. You can order a PCB batch (3 pcs.) if you want [[https://​aisler.net/​p/​LTRMQETA|here]].
   - PIO PCB. You can order a PCB batch (3 pcs.) if you want [[https://​aisler.net/​p/​FYSLIWOB|here]].   - PIO PCB. You can order a PCB batch (3 pcs.) if you want [[https://​aisler.net/​p/​FYSLIWOB|here]].
-  - Joystick PCB. How to order ?, …not yet. I've just received the PCB's…+  - Joystick PCB. You can order PCB batch (3 pcs.) if you want [[https://​aisler.net/​p/​ZJBIMKRF|here]]
  
-__**REMARK:​**__ ​ I do not stay in any relation to Aisler-PB, to offer a link to the PCB's is ONLY to simplified way to order them without using kiCAD or what else... You are free in any way to choose a different manufacturer for the PCB's.+__**REMARK:​**__ ​ I do not stay in any relation to Aisler-B.V., to offer a link to the PCB's is ONLY to simplified way to order them without using kiCAD or what else… You are free in any way to choose a different manufacturer for the PCB's. 
 + 
 +===== Helpful hints for assembling ===== 
 + 
 +__**Swiss-Pi Adapter: Adding a Clock Module**__ ​ \\ If it is intend to mount a DS3231 clock module on the PCB, drilling the holes at the right position is a concern. To get the appropriate hole spacing and position, prepare a small piece of a experimental board with 4 holes as shown in picture1, then glue it with double sided tape to the position you want to drill (check that the module doesn'​t collide with pin-header J1 and J2). The resistors R2 & R3 must be installed on the bottom side of the PCB and soldered on the TOP side later on when installing the other components and before you install the clock module ! 
 + 
 +If this is done you are ready to solder all parts on the PCB except the clock module. This comes as last. On the clock module the old pin header must be removed and replaced by a new vertical one installed on the TOP side where the DS3231 IC is located. Put a small piece of double sided tape on top of the DS3231 and glue the module on the PCB, the header pins must go through the holes ! Now everything is ready for the last step. The Picture shows how the pin header of the module has to be connected to J1. On the top left side is shown how the clock module with the new pin header is installed on the PCB. The shown wiring is only valid for the ECKSTEIN module on right hand side of picture1 ! 
 + 
 +__**Joystick-PCB:​ Preparing J5, R21/R2 for soldering first**__ ​ \\ R21/R22: Both resistors must be mounted on the bottom side of the PCB ! \\ See picture 1. Do this as your first step ! 
 + 
 +Preparing J5 Pin-Socket: I've used a 10×1 pin-socket from the Arduino Project for mounting stackable PCB's on a Pin-Header (There are 20×2 stackable Pin-Sockets from the Raspbery-Project too, may be that they have to be treated in the same way). When trying to plug them on J6 (on the Multicomp-Board) I've found out that they can't be mounted side-by-side. So some mechanical treatment was necessary. After doing this, check out that all pins are vertical aligned when plugged into the box-header on the Multicomp board (J6). Next serveral M3 Nylon Hex Spacer (length see picture2) and Nylon washers, M3x0.8mm thick, are needed. I bought a larger amount of them on ebay or AMAZON. They offer collections of different spacer types (male-female,​ female-female) and length for less money. Regarding the washers: I bought them from AMAZON PROTECH_STORE,​ "​PROTECH Large Polyamidwashers DIN 9021 M3 50 pcs.", see picture2 for installation. The Acrylic sheets are 3mm thick, color is green, but the chosen color is up to you… The outer dimensions are as the Multicomp PCB. The corner hole positions are marked by using the Multicomp PCB as a hole mask (drill: 3.5mm diameter). The Acrylic sheets are bought from AMAZON as 200x300mm^2 pre-cut parts. I've done the cut to Multicom-PCB dimensions by myself. Maybe that the chosen shop will cut it for you… 
 + 
 +After installing the 2 resistors on the joystick board install the washer and spacer as shown on picture2 to get the joystick board to the right level above the RS232 Dsub-9 connectors. Fiddle the pins from the sockets through the holes of J5 (Joystick-Board),​ then plug the socket into J6. Check their position in the box-header, then solder only one pin of each socket and check again. If everything is ok, solder all pins, then cut off the not needed length of the pins. 
 + 
 +__**Multicomp-PCB:​ installing the spacer for Acrylic sheets and ADD-On PCB'​s**__ ​ \\ Picture3 shows how to install the various spacer/​washer to get the right distance for mounting Swiss-Pi- & Joystick-PCB and the Acrylic sheets. 
 + 
 +__**PIO-Extender PCB: TOP/BOTTOM installation of the PIO-Extender Socket**__ ​ \\ Where to install this socket depends on what you want to have most on the TOP side of the Multicomp-PCB:​ Joysticks on TOP or 2nd PIO-Port. To remove the 40-pin box-header may become a hard job and may damage the through-hole plating ! From my point of view it's of higher value to installed Joystick-PCB on TOP (if the 2nd PIO-PCB is not needed, leave the PIO-Extender socket uninstalled). In principal the Joystick-Interface is more a multipurpose hardware, because the four analog inputs are voltage-to-pwm converters that transform 0..5V to it's corresponding puls-width. Nothing else the 4 counter in the FPGA do when reading back the thumb-stick position (bandwidth is roughly 45Hz, so most "slow motion"​ things will work fine). It's a suggestion…,​ at the end it's up to you. 
 + 
 +^Picture1:​^Picture2:​^Picture3:​| 
 +|{{  https://​retrobrewcomputers.org/​lib/​plugins/​ckgedit/​fckeditor/​userfiles/​image/​builderpages/​muellerk/​photos_swiss-pi-adapter_prep_clock-module_installation.jpg?​nolink&​200x167 ​ |Swiss-Pi-Adapter prep. for Clock-Module installation}}|{{ ​ https://​retrobrewcomputers.org/​lib/​plugins/​ckgedit/​fckeditor/​userfiles/​image/​builderpages/​muellerk/​photos_joystick-pcb_installation_of_j5-pin-sockets_in_j6.jpg?​nolink&​200x167 ​ |Joystick-PCB Installation of J5-Pin-Sockets in J6}}|{{ ​ https://​retrobrewcomputers.org/​lib/​plugins/​ckgedit/​fckeditor/​userfiles/​image/​builderpages/​muellerk/​photos_joystick-pcb_spacer_and_washer_installation.jpg?​nolink&​200x167 ​ |Joystick-PCB Spacer and Washer installation}}|
  
 ===== VHDL Code ===== ===== VHDL Code =====
  
-Although the code is running without any known issues, I've to bring down the number of warnings. That might cause some minor changes in the VHDL Code, but the general line is defined. The GPIO Bus is statically set to '​out'​ := '​0'​This will change in the future. The I2c, Mouse and Sound-Hardware is tested and operates as expected - as far as I can say at present. Nevertheless there might be some unexpected behavior. The I2C controller really needs some explaining words, if you want to know more, read the VHDL Code and follow the mentioned web-link in the header. The mouse-controller initializes the mouse for streaming-mode. More information can be found in the VHDL Code. The sound-channel has a special feature: It's possible to bypass the PSG's and write 8-bit data directly to the Sigma-Delta-DAC inputs. This can be used for DC-Output or to write data-streams directly to them. Again, read the VHDL Code for details/​port-addresses.+Although the code is running without any known issues, I've to bring down the number of warnings. That might cause some minor changes in the VHDL Code, but the general line is defined. The GPIO Bus is a 10-bit 2 port system with one 8-bit port (LOW) and a 2-bit port (HIGH)Single Input/​Output programming is possible. Two user-controllable LED's (use a open collector driver) are connected to the header toThey can be used as a feedback indicator. I used them for testing the GPIO-Port - very helpful ;-) The I2c, Mouse and Sound-Hardware is tested and operates as expected - as far as I can say at present. Nevertheless there might be some unexpected behavior. The I2C controller really needs some explaining words, if you want to know more (yet), read the VHDL Code and follow the mentioned web-link in the header. The mouse-controller initializes the mouse for streaming-mode. More information can be found in the VHDL Code. The sound-channel has a special feature: It's possible to bypass the PSG's and write 8-bit data directly to the Sigma-Delta-DAC inputs. This can be used for DC-Output or to write data-streams directly to them. Again, read the VHDL Code for details/​port-addresses.
  
 ===== Programming the VHDL Code ===== ===== Programming the VHDL Code =====
Line 51: Line 70:
 The Core-Board has only a jtag connector. That implies that only .sof files can easily be programed. If the code has to go to the EEPROM for permanent storage some extra steps are necessary each time you want to do this. How this can be achieved describes INTEL'​s "AN 370: Using the Intel FPGA Serial Flash Loader with the Intel Quartus Prime Software"​. I've extracted the relevant section and created a short "​Readme_Converting_.sof_to_.jic-Files.pdf"​ file which is easier to use and find. Follow these steps. The "​Output_files"​ folder in the Project Folder includes a "​Microcomputer.cof"​ file which is the Conversion-Setup for the conversion .sof → .jic. Read this in by clicking in the Selection-Box on "Open Conversion Setup-Data"​. This automates all needed settings. Next click on "​generate"​. In the programmer select "​Mikrocomputer.jic"​ for writing to the EEPROM. The Core-Board has only a jtag connector. That implies that only .sof files can easily be programed. If the code has to go to the EEPROM for permanent storage some extra steps are necessary each time you want to do this. How this can be achieved describes INTEL'​s "AN 370: Using the Intel FPGA Serial Flash Loader with the Intel Quartus Prime Software"​. I've extracted the relevant section and created a short "​Readme_Converting_.sof_to_.jic-Files.pdf"​ file which is easier to use and find. Follow these steps. The "​Output_files"​ folder in the Project Folder includes a "​Microcomputer.cof"​ file which is the Conversion-Setup for the conversion .sof → .jic. Read this in by clicking in the Selection-Box on "Open Conversion Setup-Data"​. This automates all needed settings. Next click on "​generate"​. In the programmer select "​Mikrocomputer.jic"​ for writing to the EEPROM.
  
-===== RSX-Software ​for new hardware parts =====+===== RSX-Software =====
  
 At present: nothing available. It's work in progress. At present: nothing available. It's work in progress.
Line 69: Line 88:
 ===== File Lists... ===== ===== File Lists... =====
  
-{{filelist>​multicomp*xgraph*0411.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​Multicomp-CycloneIV-July2019_VHDL.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​Docu_CycloneIV_EP4CE15-Core-Board.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​Docu_EP4CE15F23C8N_AliExpress.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​kiCAD-5.0.2_Multicomp-July-2019_V1.0_PIO-Extension.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​kiCAD-5.0.2_Multicomp-July-2019_V1.0_Swiss-Pi-Adapter.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​kiCAD-5.0.2_Multicomp-July-2019_V1.2_Main-PCB.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}+{{filelist>​multicomp*xgraph*0411.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​Multicomp-CycloneIV-July2019_VHDL.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​Docu_CycloneIV_EP4CE15-Core-Board.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​Docu_EP4CE15F23C8N_AliExpress.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​kiCAD-5.0.2_Multicomp-July-2019_V1.0_PIO-Extension.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​kiCAD-5.0.2_Multicomp-July-2019_V1.0_Swiss-Pi-Adapter.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​kiCAD-5.0.2_Multicomp-July-2019_V1.0_Joystick-Board.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}}{{filelist>​kiCAD-5.0.2_Multicomp-July-2019_V1.2_Main-PCB.tar.gz&​style=table&​tableheader=1&​tableshowdate=1&​tableshowsize=1}} 
 + 
 +\\
  
  
builderpages/muellerk/multicomp_july_2019.1575387518.txt.gz · Last modified: 2019/12/03 10:38 by muellerk
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0