I am thinking of updating the book.
There was the github version, an online Microsoft Word version and a gitbooks version. I produced the Microsoft Word version and @piers kindly converted it to github and gitbooks.
I think gitbooks proved to be a bit of a pain and Microsoft word is not very open, so I will probably just produce a github version this time.
The main problem with the github version was that there was no navigation between the pages, e.g. by Next and Previous buttons. I don't know if there is a simple solution to this.
Do people have a view on whether a specific Blackice Mx version would be best, or whether I should generalise it to be for Blackice I, II, Mx and other open source boards?
I am fairly familiar with the TinyFPGA Bx, iCeBreaker and Fomu boards, so a more general ice40 version would be possible.
However, I suspect that versions of the book aimed at a specific board would be more useful.
I am a bit more experienced with Verilog and FPGAs now, so I should be able to make the book more accurate.
There were a lot of chapters on BlackSoC in the Blackice II version of the book. As @Folknology says, I will probably convert those to SaxonSoc as BlackSoC does not yet run on the Blackice II board as it would require the SRAM access to be converted to SDRAM, which is not trivial.
BlackSoc was based on icoSoC which uses the picorv32 Risc-V processor, which is written in Verilog. (There is also picoSoC which is a simpler SoC based on picorv32).
SaxonSoc uses VexRiscv, as its Risc-V processor. VexRiscv is a more sophisticated Risc-V implementation than picorv32. It is faster and much more configurable and scales right up to implementing Linux. However it is written in the SpinalHDL language rather than directly in Verilog, which is an extra thing to learn and more software to install. SpinalHDL is written in the scala language which is quite a difficult language to learn and master. SaxonSoc complements VexRiscv and allows you to generate Systems on a Chip with a variety of memory options and peripherals. It is again written in SpinalHDL and is a lot more sophisticated than BlackSoc.
Another issue with SaxonSoc is that it is a work in progress, and might change.
One option is that I would get picoSoC working on the BlackIce Mx using BRAM and possibly flash memory but not SDRAM. That could then be a simpler introduction to Risc-V and SoCs, and I could then move on to SaxonSoC for support of SDRAM and lots more peripherals. Does that sound like a good idea?
Also, as Blackice Mx is a much newer board, not everything that ran on Blackice II, currently runs on Blackice II. I am going through the retro computer projects that ran on Blackice I and II and converting them to run on Blackice II, but some like the BBC Micro are a bit hard to convert from SRAM to SDRAM.
Another difference between the Blackice II and Blackice Mx board, is that Blackice II had Arduino headers connected to the STM32. This means that Arduino projects such as my Oscilloscope project are not straightforward to convert. But I do have a Risc-V version of Arduino running using SaxonSoc, so I could put that in the book instead.