You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+61-14Lines changed: 61 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Veecom
2
2
3
-
#### A Simple Yet Powerful RISC-V Computer
3
+
#### Simple Yet Powerful RISC-V Computer
4
4
5
5
## Table of Contents
6
6
*[Introduction](#intro)<br />
@@ -11,14 +11,15 @@
11
11
*[uBASIC](#ubasic)<br />
12
12
*[Games](#games)<br />
13
13
*[Memory Map](#mmap)<br />
14
+
*[Benchmarks](#bench)<br />
14
15
15
16
Introduction <aname="intro"></a>
16
17
---
17
18
18
19
Veecom is a 32-bit computer system that combines the simplicity of 8-bit home computers with modern RISC-V technology, offering users a unique and nostalgic computing experience. It features several notable improvements over the RISC-V Computer 2.0. These include a sleek new design, improved CPU microarchitecture, a new Multi-Cycle CPU version, simplified DMA design, a new replacement for the PIA and a simple BASIC interpreter for an engaging programming experience.
19
20
20
21
<figurealign="center">
21
-
<img src="screenshots/veecom.svg", alt="veecom">
22
+
<img src="images/veecom.png", alt="veecom">
22
23
</figure>
23
24
24
25
<br/>
@@ -30,7 +31,7 @@ Veecom's design follows a Memory-Mapped approach, utilizing an Address Decoder t
30
31
The DMA Controller in Veecom is simpler in design and more compact, supporting up to 64KB of data transfer and addressing capability.
The design of this predictor is static branch prediction, featuring a 6-bit Branch History Register `BHSR` and 64-entry Branch Target Buffer `BTB`. It uses an indexing machanisim similar to `GShare predictors`, where the Program Counter `PC` value is XORed with the `BHSR`. This static predictor is a `Taken-Only` design, where only taken branches are stored in the `BTB`.
Inspired by the MOS 6522 VIA, Veecom's VIA features several enhancements and improvements over its predecessor, featuring three 8-bit I/O ports `Port A`, `Port B` and `Port C` that can be used for both input and output without the need for data direction register, allowing for more flexible I/O access (Please refer to [Memory Map](#mmap) section for supported operations).
69
98
Additionally, the VIA features a new 8-bit timer similar to Timer-1 found in the MOS 6522 VIA. it supports multiple operation frequencies (up to `f/16`, with `f/2` set as default) and two operations modes, `One-Shot` and `Free-Run`.
70
99
71
100
<figurealign="center">
72
-
<img src="screenshots/via.svg", alt="via">
101
+
<img src="images/via.png", alt="via">
73
102
</figure>
74
103
75
104
#### Timer Operation
@@ -93,7 +122,7 @@ The Timer Expired Flag (TXP) indicates if a timer overflow has occurred. Once th
93
122
This 8-bit register controls the operation of the timer, the following figure lists the functions of the command bits.
94
123
95
124
<figurealign="center">
96
-
<img src="screenshots/timer_ctrl.svg", alt="via">
125
+
<img src="images/timer_ctrl.svg", alt="via">
97
126
</figure>
98
127
99
128
<br/>
@@ -108,7 +137,7 @@ The DMA Controller in Veecom is simpler in design and more compact, supporting u
108
137
The DMA Controller is designed for fast and efficient `memory-to-IO` data transfer. It features four 8-bit registers: `DSL`, `DSH`, `DAL` and `DAH`, which control the size and address of the data being transferred (Please refer to [Memory Map](#mmap) section for supported operations). The `DSL` and `DSH` registers determine the size of the data, allowing for 16-bit transfers. The `DAL` and `DAH` registers specify the memory location from which data is fetched. Once the `DAH` register is written, the DMA Controller asserts the `HRQ` (Hold Request) pin, signaling the CPU to halt if it's not currently using the system bus. In response, the CPU acknowledges the request by asserting `HLDA` (Hold Acknowledge) pin. The CPU remains halted until the transfer is completed.
109
138
110
139
<figurealign="center">
111
-
<img src="screenshots/dmac.svg", alt="dmac">
140
+
<img src="images/dmac.png", alt="dmac">
112
141
</figure>
113
142
114
143
<br/>
@@ -118,6 +147,11 @@ uBASIC <a name="ubasic"></a>
118
147
119
148
[Veecom uBASIC](https://github.com/MazinCE/Veecom-uBasic) is a derivative of the [uBASIC](https://dunkels.com/adam/ubasic/) interpreter originally authored by Adam Dunkels. This version of uBASIC has been improved to be made fully interactive, with the incorporation of additional commands and performance optimizations.
120
149
150
+
<figurealign="center">
151
+
<img src="images/ubasic.svg", alt="dmac">
152
+
</figure>
153
+
154
+
<br/>
121
155
122
156
#### Key Features
123
157
@@ -138,7 +172,7 @@ Veecom uBASIC added support for multiple new commands, these include `RUN`, `LIS
The follwing benchmark results were obtained using `riscv64-unknown-elf-gcc (GCC) 10.1.0` with no compiler optimizations applied `-O0`. Each number represents the number of clock cycles taken for execution.
225
+
226
+
| CPU Model | Quick Sort (10 El) | Matrix Multiplication (4x4) | Memset (100-Integer Buffer) |
0 commit comments