<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Wojtek<div class=""><br class=""></div><div class="">You’re obviously right. In my previous mail, I only spoke about the CPU speed assuming the other clocks stay the same.</div><div class=""><br class=""></div><div class="">For the OberonStation, RISC5Top.v looks like this:</div><div class=""><pre style="word-wrap: break-word; white-space: pre-wrap;" class="">always @(posedge clk0) clk <= ~clk;
always @(posedge clkfx) begin
clk0 <= ~clk0 & ~clk1; clk1 <= clk0;
pclk <= ~pclk;
end
</pre></div><div class="">clkfx runs at 150 MHz</div><div class="">pcclk runs at 75 MHz (VGA timing)</div><div class="">clk0 runs at 50 MHz</div><div class="">clk runs at 25 MHz</div><div class=""><br class=""></div><div class="">So, instead of dividing by 3 and then by 2 to get to clk, we would need to divide clkfx by 5.</div><div class=""><div class="">Of course the SPI divider „tick“ needs to adopted from 63 to 75 and so on. (400 kHz = 25MHz / 63 = 30 MHz / 75)</div></div><div class="">Sorry, I forgot to mention these details.</div><div class=""><br class=""></div><div class="">br</div><div class="">Jörg</div><div class=""><br class=""></div><div class=""><div><blockquote type="cite" class=""><div class="">Am 07.10.2017 um 16:23 schrieb Skulski, Wojciech <<a href="mailto:skulski@pas.rochester.edu" class="">skulski@pas.rochester.edu</a>>:</div><br class="Apple-interchange-newline"><div class=""><div class=""><blockquote type="cite" class="">The RISC-5 can do the memory access, the instruction decoding and register calculations <br class="">in 40 ns, as it runs today at 25 MHz. If we overclock it 30 MHz it has to do the same things <br class="">in 33 ns. Perhaps Magnus knows if the FPGA implementation of RISC-5 can handle this speed.<br class=""></blockquote><br class="">Beware: After "overclocking" the VGA signal timing will change and the monitor may have problems synchronizing. If so then the SoC video controller will need modifications. Now read the following.<br class=""><br class="">Chris has run RISC5 at 50 MHz without extensive changes to the CPU code. However, the CPU ran completely embedded. It worked with the on-chip BRAM, which is several times faster than the off-chip RAM. Chris has demonstrated that the CPU can run faster even in its present form.<br class=""><br class="">The FPGA Oberon is not just CPU, however. It is the whole thing with all the peripherals, including the memory controller. The modern name for such a design is System On Chip, SoC. The whole SoC can run as fast as permitted by its slowest part.<br class=""><br class="">In this case the speed limit comes from the Asynchronous RAM (ASRAM) memory, whose nominal speed "10 ns" is a bit misleading. The memory chip cannot perform back-to-back read-write access. If the CPU changes the transfer direction, the RAM chip needs time to settle. This is the reason why you cannot easily ramp up the speed of the SoC in its present form. This code is running about as fast as it can. ASRAM timing is extensively discussed by Chu in his "Prototyping...." books, which should become required reading for all interested in the FPGA Oberon future. Very well written! Browsing through these books will remove the aura of mystery surrounding this technology. The info is at the end.<br class=""><br class="">Some options to speed up the Oberon SoC running on the ASRAM memory are the following.<br class=""><br class="">1. Replace the "10 ns" chips with "8 ns" chips and run a little bit faster. Specifically, AS7C34096A-8TIN. These chips are not stocked at DigiKey, but may be available elsewhere. Beware of VGA timing consequences.<br class=""><br class="">2. Redesign the SoC and move the color memory to BRAM inside the FPGA. Not a very viable solution because you will need a lot of BRAM. Only high end FPGA offer enough of this resource.<br class=""><br class="">3. Follow Pong P. Chu recommendation from his SRAM memory discussion. Overclock not the whole design, but just the memory timing strobes. The strobes can run on a 5 ns grid rather than 10 ns, effectively halving the turn-around ASRAM timing. Chu does not provide a tested code, but his proposition looks solid.<br class=""><br class="">4. Replace ASRAM with ZBT RAM. This will require a new PCB. I can post the schematic. I developed the PCB layout, but I am not going to make this board "as is" because in my infinite stupidity I used the LX9 chip in gull wing footprint. A very stupid choice! But I can circulate the design if you are interested.<br class=""><br class="">5. Move the entire SoC to Pipistrello. <br class=""><br class="">6. Choose one of the commercial boards from Digilent (Arty?) or Xilinx (expensive). <br class=""><br class="">7. Find some other board, which would be more ideal for the project. <br class=""><br class="">8. Wait till I release my own boards, which is limited by the amount of time I can devote to this project. <br class=""><br class="">Options 5 through 7 will require a thorough SoC redesign, which should happen eventually anyway.<br class=""><br class="">In conclusion, you cannot just change the clock and obtain the same, but running faster. It is a technology, where pieces need to be consistent among themselves. Some design work is required.... <br class=""><br class="">W.<br class=""><br class="">PS: Project Oberon lacks references to FPGA literature. The Project does not (should not) live in vacuum. It is a part of a lively field with rich literature. Lack of references can be misleading.<br class=""><br class="">------------ The Books -----------<br class="">These books should become standard reference material for supporters of FPGA Oberon. I recommend having both VHDL and Verilog versions, because Verilog can be very demanding and potentially misleading in practice. VHDL offers a much safer coding style for casual FPGA programmers like myself. I do believe that the entire Oberon SoC should be converted to VHDL. I also do believe that LOLA coding with subsequent translation to Verilog has served its role and needs be retired.<br class=""><br class="">Pong P. Chu, "FPGA Prototyping By Verilog Examples: Xilinx Spartan-3 Version"<br class="">Pong P. Chu, "FPGA Prototyping By VHDL Examples: Xilinx Spartan-3 Version"<br class="">Pong P. Chu, "FPGA Prototyping by VHDL Examples: Xilinx Microblaze MCS Soc" (just released....)<br class="">Pong P. Chu, "FPGA Prototyping by Verilog Examples: Xilinx MicroBlaze MCS SoCApr 3, 2018" (next year....)<br class=""><br class=""><br class=""><br class="">--<br class=""><a href="mailto:Oberon@lists.inf.ethz.ch" class="">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br class=""><a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" class="">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br class=""></div></div></blockquote></div><br class=""></div></body></html>