diff options
| author | vin <git@vineetk.net> | 2025-03-10 15:41:13 -0400 |
|---|---|---|
| committer | vin <git@vineetk.net> | 2025-03-10 15:41:13 -0400 |
| commit | f697bf76970fc1d264d52afd7e0e28d64f209e82 (patch) | |
| tree | 08f56d8219b7a14382a6ab9b2227898e01424450 | |
initial payload
| -rw-r--r-- | CEL_PROJECT.qpf | 6 | ||||
| -rw-r--r-- | CEL_PROJECT.qsf | 285 | ||||
| -rw-r--r-- | CEL_PROJECT.sdc | 86 | ||||
| -rw-r--r-- | CEL_PROJECT.v | 38 | ||||
| -rw-r--r-- | my_computer_tb.v | 23 | ||||
| -rw-r--r-- | riscvsingle.sv | 390 | ||||
| -rw-r--r-- | riscvtest.s | 33 | ||||
| -rw-r--r-- | riscvtest_ram_image.txt | 1024 | ||||
| -rw-r--r-- | riscvtest_rom_image.txt | 21 |
9 files changed, 1906 insertions, 0 deletions
diff --git a/CEL_PROJECT.qpf b/CEL_PROJECT.qpf new file mode 100644 index 0000000..475032c --- /dev/null +++ b/CEL_PROJECT.qpf | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | DATE = "03:53:12 February 25, 2025" | ||
| 2 | QUARTUS_VERSION = "16.0.0" | ||
| 3 | |||
| 4 | # Revisions | ||
| 5 | |||
| 6 | PROJECT_REVISION = "CEL_PROJECT" | ||
diff --git a/CEL_PROJECT.qsf b/CEL_PROJECT.qsf new file mode 100644 index 0000000..e18bca1 --- /dev/null +++ b/CEL_PROJECT.qsf | |||
| @@ -0,0 +1,285 @@ | |||
| 1 | #============================================================ | ||
| 2 | # Build by Terasic System Builder | ||
| 3 | #============================================================ | ||
| 4 | |||
| 5 | set_global_assignment -name FAMILY "MAX 10 FPGA" | ||
| 6 | set_global_assignment -name DEVICE 10M50DAF484C7G | ||
| 7 | set_global_assignment -name TOP_LEVEL_ENTITY "CEL_PROJECT" | ||
| 8 | set_global_assignment -name ORIGINAL_QUARTUS_VERSION "16.0.0" | ||
| 9 | set_global_assignment -name LAST_QUARTUS_VERSION "21.1.0 Lite Edition" | ||
| 10 | set_global_assignment -name PROJECT_CREATION_TIME_DATE "03:53:12 FEBRUARY 25,2025" | ||
| 11 | set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA | ||
| 12 | set_global_assignment -name DEVICE_FILTER_PIN_COUNT 484 | ||
| 13 | set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 7 | ||
| 14 | set_global_assignment -name SDC_FILE CEL_PROJECT.SDC | ||
| 15 | |||
| 16 | #============================================================ | ||
| 17 | # CLOCK | ||
| 18 | #============================================================ | ||
| 19 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to ADC_CLK_10 | ||
| 20 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MAX10_CLK1_50 | ||
| 21 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to MAX10_CLK2_50 | ||
| 22 | set_location_assignment PIN_N5 -to ADC_CLK_10 | ||
| 23 | set_location_assignment PIN_P11 -to MAX10_CLK1_50 | ||
| 24 | set_location_assignment PIN_N14 -to MAX10_CLK2_50 | ||
| 25 | |||
| 26 | #============================================================ | ||
| 27 | # SEG7 | ||
| 28 | #============================================================ | ||
| 29 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[0] | ||
| 30 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[1] | ||
| 31 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[2] | ||
| 32 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[3] | ||
| 33 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[4] | ||
| 34 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[5] | ||
| 35 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[6] | ||
| 36 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX0[7] | ||
| 37 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[0] | ||
| 38 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[1] | ||
| 39 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[2] | ||
| 40 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[3] | ||
| 41 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[4] | ||
| 42 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[5] | ||
| 43 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[6] | ||
| 44 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX1[7] | ||
| 45 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[0] | ||
| 46 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[1] | ||
| 47 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[2] | ||
| 48 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[3] | ||
| 49 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[4] | ||
| 50 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[5] | ||
| 51 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[6] | ||
| 52 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX2[7] | ||
| 53 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[0] | ||
| 54 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[1] | ||
| 55 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[2] | ||
| 56 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[3] | ||
| 57 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[4] | ||
| 58 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[5] | ||
| 59 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[6] | ||
| 60 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX3[7] | ||
| 61 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[0] | ||
| 62 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[1] | ||
| 63 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[2] | ||
| 64 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[3] | ||
| 65 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[4] | ||
| 66 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[5] | ||
| 67 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[6] | ||
| 68 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX4[7] | ||
| 69 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[0] | ||
| 70 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[1] | ||
| 71 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[2] | ||
| 72 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[3] | ||
| 73 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[4] | ||
| 74 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[5] | ||
| 75 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[6] | ||
| 76 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to HEX5[7] | ||
| 77 | set_location_assignment PIN_C14 -to HEX0[0] | ||
| 78 | set_location_assignment PIN_E15 -to HEX0[1] | ||
| 79 | set_location_assignment PIN_C15 -to HEX0[2] | ||
| 80 | set_location_assignment PIN_C16 -to HEX0[3] | ||
| 81 | set_location_assignment PIN_E16 -to HEX0[4] | ||
| 82 | set_location_assignment PIN_D17 -to HEX0[5] | ||
| 83 | set_location_assignment PIN_C17 -to HEX0[6] | ||
| 84 | set_location_assignment PIN_D15 -to HEX0[7] | ||
| 85 | set_location_assignment PIN_C18 -to HEX1[0] | ||
| 86 | set_location_assignment PIN_D18 -to HEX1[1] | ||
| 87 | set_location_assignment PIN_E18 -to HEX1[2] | ||
| 88 | set_location_assignment PIN_B16 -to HEX1[3] | ||
| 89 | set_location_assignment PIN_A17 -to HEX1[4] | ||
| 90 | set_location_assignment PIN_A18 -to HEX1[5] | ||
| 91 | set_location_assignment PIN_B17 -to HEX1[6] | ||
| 92 | set_location_assignment PIN_A16 -to HEX1[7] | ||
| 93 | set_location_assignment PIN_B20 -to HEX2[0] | ||
| 94 | set_location_assignment PIN_A20 -to HEX2[1] | ||
| 95 | set_location_assignment PIN_B19 -to HEX2[2] | ||
| 96 | set_location_assignment PIN_A21 -to HEX2[3] | ||
| 97 | set_location_assignment PIN_B21 -to HEX2[4] | ||
| 98 | set_location_assignment PIN_C22 -to HEX2[5] | ||
| 99 | set_location_assignment PIN_B22 -to HEX2[6] | ||
| 100 | set_location_assignment PIN_A19 -to HEX2[7] | ||
| 101 | set_location_assignment PIN_F21 -to HEX3[0] | ||
| 102 | set_location_assignment PIN_E22 -to HEX3[1] | ||
| 103 | set_location_assignment PIN_E21 -to HEX3[2] | ||
| 104 | set_location_assignment PIN_C19 -to HEX3[3] | ||
| 105 | set_location_assignment PIN_C20 -to HEX3[4] | ||
| 106 | set_location_assignment PIN_D19 -to HEX3[5] | ||
| 107 | set_location_assignment PIN_E17 -to HEX3[6] | ||
| 108 | set_location_assignment PIN_D22 -to HEX3[7] | ||
| 109 | set_location_assignment PIN_F18 -to HEX4[0] | ||
| 110 | set_location_assignment PIN_E20 -to HEX4[1] | ||
| 111 | set_location_assignment PIN_E19 -to HEX4[2] | ||
| 112 | set_location_assignment PIN_J18 -to HEX4[3] | ||
| 113 | set_location_assignment PIN_H19 -to HEX4[4] | ||
| 114 | set_location_assignment PIN_F19 -to HEX4[5] | ||
| 115 | set_location_assignment PIN_F20 -to HEX4[6] | ||
| 116 | set_location_assignment PIN_F17 -to HEX4[7] | ||
| 117 | set_location_assignment PIN_J20 -to HEX5[0] | ||
| 118 | set_location_assignment PIN_K20 -to HEX5[1] | ||
| 119 | set_location_assignment PIN_L18 -to HEX5[2] | ||
| 120 | set_location_assignment PIN_N18 -to HEX5[3] | ||
| 121 | set_location_assignment PIN_M20 -to HEX5[4] | ||
| 122 | set_location_assignment PIN_N19 -to HEX5[5] | ||
| 123 | set_location_assignment PIN_N20 -to HEX5[6] | ||
| 124 | set_location_assignment PIN_L19 -to HEX5[7] | ||
| 125 | |||
| 126 | #============================================================ | ||
| 127 | # KEY | ||
| 128 | #============================================================ | ||
| 129 | set_instance_assignment -name IO_STANDARD "3.3 V Schmitt Trigger" -to KEY[0] | ||
| 130 | set_instance_assignment -name IO_STANDARD "3.3 V Schmitt Trigger" -to KEY[1] | ||
| 131 | set_location_assignment PIN_B8 -to KEY[0] | ||
| 132 | set_location_assignment PIN_A7 -to KEY[1] | ||
| 133 | |||
| 134 | #============================================================ | ||
| 135 | # LED | ||
| 136 | #============================================================ | ||
| 137 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[0] | ||
| 138 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[1] | ||
| 139 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[2] | ||
| 140 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[3] | ||
| 141 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[4] | ||
| 142 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[5] | ||
| 143 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[6] | ||
| 144 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[7] | ||
| 145 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[8] | ||
| 146 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LEDR[9] | ||
| 147 | set_location_assignment PIN_A8 -to LEDR[0] | ||
| 148 | set_location_assignment PIN_A9 -to LEDR[1] | ||
| 149 | set_location_assignment PIN_A10 -to LEDR[2] | ||
| 150 | set_location_assignment PIN_B10 -to LEDR[3] | ||
| 151 | set_location_assignment PIN_D13 -to LEDR[4] | ||
| 152 | set_location_assignment PIN_C13 -to LEDR[5] | ||
| 153 | set_location_assignment PIN_E14 -to LEDR[6] | ||
| 154 | set_location_assignment PIN_D14 -to LEDR[7] | ||
| 155 | set_location_assignment PIN_A11 -to LEDR[8] | ||
| 156 | set_location_assignment PIN_B11 -to LEDR[9] | ||
| 157 | |||
| 158 | #============================================================ | ||
| 159 | # SW | ||
| 160 | #============================================================ | ||
| 161 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[0] | ||
| 162 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[1] | ||
| 163 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[2] | ||
| 164 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[3] | ||
| 165 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[4] | ||
| 166 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[5] | ||
| 167 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[6] | ||
| 168 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[7] | ||
| 169 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[8] | ||
| 170 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to SW[9] | ||
| 171 | set_location_assignment PIN_C10 -to SW[0] | ||
| 172 | set_location_assignment PIN_C11 -to SW[1] | ||
| 173 | set_location_assignment PIN_D12 -to SW[2] | ||
| 174 | set_location_assignment PIN_C12 -to SW[3] | ||
| 175 | set_location_assignment PIN_A12 -to SW[4] | ||
| 176 | set_location_assignment PIN_B12 -to SW[5] | ||
| 177 | set_location_assignment PIN_A13 -to SW[6] | ||
| 178 | set_location_assignment PIN_A14 -to SW[7] | ||
| 179 | set_location_assignment PIN_B14 -to SW[8] | ||
| 180 | set_location_assignment PIN_F15 -to SW[9] | ||
| 181 | |||
| 182 | #============================================================ | ||
| 183 | # GPIO, GPIO connect to GPIO Default | ||
| 184 | #============================================================ | ||
| 185 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[0] | ||
| 186 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[1] | ||
| 187 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[2] | ||
| 188 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[3] | ||
| 189 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[4] | ||
| 190 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[5] | ||
| 191 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[6] | ||
| 192 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[7] | ||
| 193 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[8] | ||
| 194 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[9] | ||
| 195 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[10] | ||
| 196 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[11] | ||
| 197 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[12] | ||
| 198 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[13] | ||
| 199 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[14] | ||
| 200 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[15] | ||
| 201 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[16] | ||
| 202 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[17] | ||
| 203 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[18] | ||
| 204 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[19] | ||
| 205 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[20] | ||
| 206 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[21] | ||
| 207 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[22] | ||
| 208 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[23] | ||
| 209 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[24] | ||
| 210 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[25] | ||
| 211 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[26] | ||
| 212 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[27] | ||
| 213 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[28] | ||
| 214 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[29] | ||
| 215 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[30] | ||
| 216 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[31] | ||
| 217 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[32] | ||
| 218 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[33] | ||
| 219 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[34] | ||
| 220 | set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to GPIO[35] | ||
| 221 | set_location_assignment PIN_V10 -to GPIO[0] | ||
| 222 | set_location_assignment PIN_W10 -to GPIO[1] | ||
| 223 | set_location_assignment PIN_V9 -to GPIO[2] | ||
| 224 | set_location_assignment PIN_W9 -to GPIO[3] | ||
| 225 | set_location_assignment PIN_V8 -to GPIO[4] | ||
| 226 | set_location_assignment PIN_W8 -to GPIO[5] | ||
| 227 | set_location_assignment PIN_V7 -to GPIO[6] | ||
| 228 | set_location_assignment PIN_W7 -to GPIO[7] | ||
| 229 | set_location_assignment PIN_W6 -to GPIO[8] | ||
| 230 | set_location_assignment PIN_V5 -to GPIO[9] | ||
| 231 | set_location_assignment PIN_W5 -to GPIO[10] | ||
| 232 | set_location_assignment PIN_AA15 -to GPIO[11] | ||
| 233 | set_location_assignment PIN_AA14 -to GPIO[12] | ||
| 234 | set_location_assignment PIN_W13 -to GPIO[13] | ||
| 235 | set_location_assignment PIN_W12 -to GPIO[14] | ||
| 236 | set_location_assignment PIN_AB13 -to GPIO[15] | ||
| 237 | set_location_assignment PIN_AB12 -to GPIO[16] | ||
| 238 | set_location_assignment PIN_Y11 -to GPIO[17] | ||
| 239 | set_location_assignment PIN_AB11 -to GPIO[18] | ||
| 240 | set_location_assignment PIN_W11 -to GPIO[19] | ||
| 241 | set_location_assignment PIN_AB10 -to GPIO[20] | ||
| 242 | set_location_assignment PIN_AA10 -to GPIO[21] | ||
| 243 | set_location_assignment PIN_AA9 -to GPIO[22] | ||
| 244 | set_location_assignment PIN_Y8 -to GPIO[23] | ||
| 245 | set_location_assignment PIN_AA8 -to GPIO[24] | ||
| 246 | set_location_assignment PIN_Y7 -to GPIO[25] | ||
| 247 | set_location_assignment PIN_AA7 -to GPIO[26] | ||
| 248 | set_location_assignment PIN_Y6 -to GPIO[27] | ||
| 249 | set_location_assignment PIN_AA6 -to GPIO[28] | ||
| 250 | set_location_assignment PIN_Y5 -to GPIO[29] | ||
| 251 | set_location_assignment PIN_AA5 -to GPIO[30] | ||
| 252 | set_location_assignment PIN_Y4 -to GPIO[31] | ||
| 253 | set_location_assignment PIN_AB3 -to GPIO[32] | ||
| 254 | set_location_assignment PIN_Y3 -to GPIO[33] | ||
| 255 | set_location_assignment PIN_AB2 -to GPIO[34] | ||
| 256 | set_location_assignment PIN_AA2 -to GPIO[35] | ||
| 257 | |||
| 258 | #============================================================ | ||
| 259 | # End of pin assignments by Terasic System Builder | ||
| 260 | #============================================================ | ||
| 261 | |||
| 262 | |||
| 263 | set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top | ||
| 264 | set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top | ||
| 265 | set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top | ||
| 266 | set_global_assignment -name SYSTEMVERILOG_FILE riscvsingle.sv | ||
| 267 | set_global_assignment -name VERILOG_FILE my_computer_tb.v | ||
| 268 | set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 | ||
| 269 | set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 | ||
| 270 | set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" | ||
| 271 | set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" | ||
| 272 | set_global_assignment -name EDA_SIMULATION_TOOL "Questa Intel FPGA (Verilog)" | ||
| 273 | set_global_assignment -name EDA_TIME_SCALE "1 ps" -section_id eda_simulation | ||
| 274 | set_global_assignment -name EDA_OUTPUT_DATA_FORMAT "VERILOG HDL" -section_id eda_simulation | ||
| 275 | set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST OFF -section_id eda_board_design_timing | ||
| 276 | set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST OFF -section_id eda_board_design_symbol | ||
| 277 | set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST OFF -section_id eda_board_design_signal_integrity | ||
| 278 | set_global_assignment -name EDA_GENERATE_FUNCTIONAL_NETLIST OFF -section_id eda_board_design_boundary_scan | ||
| 279 | set_global_assignment -name EDA_TEST_BENCH_ENABLE_STATUS TEST_BENCH_MODE -section_id eda_simulation | ||
| 280 | set_global_assignment -name EDA_NATIVELINK_SIMULATION_TEST_BENCH my_computer_tb -section_id eda_simulation | ||
| 281 | set_global_assignment -name EDA_TEST_BENCH_NAME my_computer_tb -section_id eda_simulation | ||
| 282 | set_global_assignment -name EDA_DESIGN_INSTANCE_NAME NA -section_id my_computer_tb | ||
| 283 | set_global_assignment -name EDA_TEST_BENCH_MODULE_NAME my_computer_tb -section_id my_computer_tb | ||
| 284 | set_global_assignment -name EDA_TEST_BENCH_FILE my_computer_tb.v -section_id my_computer_tb | ||
| 285 | set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file | ||
diff --git a/CEL_PROJECT.sdc b/CEL_PROJECT.sdc new file mode 100644 index 0000000..7267c16 --- /dev/null +++ b/CEL_PROJECT.sdc | |||
| @@ -0,0 +1,86 @@ | |||
| 1 | #************************************************************** | ||
| 2 | # This .sdc file is created by Terasic Tool. | ||
| 3 | # Users are recommended to modify this file to match users logic. | ||
| 4 | #************************************************************** | ||
| 5 | |||
| 6 | #************************************************************** | ||
| 7 | # Create Clock | ||
| 8 | #************************************************************** | ||
| 9 | create_clock -period "10.0 MHz" [get_ports ADC_CLK_10] | ||
| 10 | create_clock -period "50.0 MHz" [get_ports MAX10_CLK1_50] | ||
| 11 | create_clock -period "50.0 MHz" [get_ports MAX10_CLK2_50] | ||
| 12 | |||
| 13 | #************************************************************** | ||
| 14 | # Create Generated Clock | ||
| 15 | #************************************************************** | ||
| 16 | derive_pll_clocks | ||
| 17 | |||
| 18 | |||
| 19 | |||
| 20 | #************************************************************** | ||
| 21 | # Set Clock Latency | ||
| 22 | #************************************************************** | ||
| 23 | |||
| 24 | |||
| 25 | |||
| 26 | #************************************************************** | ||
| 27 | # Set Clock Uncertainty | ||
| 28 | #************************************************************** | ||
| 29 | derive_clock_uncertainty | ||
| 30 | |||
| 31 | |||
| 32 | |||
| 33 | #************************************************************** | ||
| 34 | # Set Input Delay | ||
| 35 | #************************************************************** | ||
| 36 | |||
| 37 | |||
| 38 | |||
| 39 | #************************************************************** | ||
| 40 | # Set Output Delay | ||
| 41 | #************************************************************** | ||
| 42 | |||
| 43 | |||
| 44 | |||
| 45 | #************************************************************** | ||
| 46 | # Set Clock Groups | ||
| 47 | #************************************************************** | ||
| 48 | |||
| 49 | |||
| 50 | |||
| 51 | #************************************************************** | ||
| 52 | # Set False Path | ||
| 53 | #************************************************************** | ||
| 54 | |||
| 55 | |||
| 56 | |||
| 57 | #************************************************************** | ||
| 58 | # Set Multicycle Path | ||
| 59 | #************************************************************** | ||
| 60 | |||
| 61 | |||
| 62 | |||
| 63 | #************************************************************** | ||
| 64 | # Set Maximum Delay | ||
| 65 | #************************************************************** | ||
| 66 | |||
| 67 | |||
| 68 | |||
| 69 | #************************************************************** | ||
| 70 | # Set Minimum Delay | ||
| 71 | #************************************************************** | ||
| 72 | |||
| 73 | |||
| 74 | |||
| 75 | #************************************************************** | ||
| 76 | # Set Input Transition | ||
| 77 | #************************************************************** | ||
| 78 | |||
| 79 | |||
| 80 | |||
| 81 | #************************************************************** | ||
| 82 | # Set Load | ||
| 83 | #************************************************************** | ||
| 84 | |||
| 85 | |||
| 86 | |||
diff --git a/CEL_PROJECT.v b/CEL_PROJECT.v new file mode 100644 index 0000000..082b5de --- /dev/null +++ b/CEL_PROJECT.v | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | module CEL_PROJECT( | ||
| 2 | |||
| 3 | //////////// CLOCK ////////// | ||
| 4 | input ADC_CLK_10, | ||
| 5 | input MAX10_CLK1_50, | ||
| 6 | input MAX10_CLK2_50, | ||
| 7 | |||
| 8 | //////////// SEG7 ////////// | ||
| 9 | output [7:0] HEX0, | ||
| 10 | output [7:0] HEX1, | ||
| 11 | output [7:0] HEX2, | ||
| 12 | output [7:0] HEX3, | ||
| 13 | output [7:0] HEX4, | ||
| 14 | output [7:0] HEX5, | ||
| 15 | |||
| 16 | //////////// KEY ////////// | ||
| 17 | input [1:0] KEY, | ||
| 18 | |||
| 19 | //////////// LED ////////// | ||
| 20 | output [9:0] LEDR, | ||
| 21 | |||
| 22 | //////////// SW ////////// | ||
| 23 | input [9:0] SW, | ||
| 24 | |||
| 25 | //////////// GPIO, GPIO connect to GPIO Default ////////// | ||
| 26 | inout [35:0] GPIO | ||
| 27 | ); | ||
| 28 | |||
| 29 | |||
| 30 | wire [31:0] my_PC, my_rd; | ||
| 31 | |||
| 32 | assign clk = ~KEY[1]; //ADC_CLK_10; | ||
| 33 | |||
| 34 | my_computer U1(.clk(clk), .reset(~KEY[0]), .my_sw(SW[7:0]), .my_rd(my_rd), .my_PC(my_PC)); // Excluding comments 200+ lines of "code" | ||
| 35 | |||
| 36 | assign LEDR = SW[9] ? my_PC : my_rd; | ||
| 37 | |||
| 38 | endmodule | ||
diff --git a/my_computer_tb.v b/my_computer_tb.v new file mode 100644 index 0000000..3c37728 --- /dev/null +++ b/my_computer_tb.v | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | `timescale 1ns/1ps | ||
| 2 | |||
| 3 | module my_computer_tb(); | ||
| 4 | |||
| 5 | reg clk, reset; | ||
| 6 | |||
| 7 | // instantiate device to be tested | ||
| 8 | my_computer U1(.clk(clk), .reset(reset), .my_sw(0), .my_rd(), .my_PC()); | ||
| 9 | |||
| 10 | always | ||
| 11 | begin | ||
| 12 | #5; clk <= ~clk; | ||
| 13 | end | ||
| 14 | |||
| 15 | initial | ||
| 16 | begin | ||
| 17 | reset <= 1; clk = 1; | ||
| 18 | #22; reset <= 0; | ||
| 19 | #1000; | ||
| 20 | $stop; | ||
| 21 | end | ||
| 22 | |||
| 23 | endmodule \ No newline at end of file | ||
diff --git a/riscvsingle.sv b/riscvsingle.sv new file mode 100644 index 0000000..f536718 --- /dev/null +++ b/riscvsingle.sv | |||
| @@ -0,0 +1,390 @@ | |||
| 1 | // riscvsingle.sv | ||
| 2 | |||
| 3 | // RISC-V single-cycle processor | ||
| 4 | // From Section 7.6 of Digital Design & Computer Architecture | ||
| 5 | // 27 April 2020 | ||
| 6 | // David_Harris@hmc.edu | ||
| 7 | // Sarah.Harris@unlv.edu | ||
| 8 | |||
| 9 | // run 210 | ||
| 10 | // Expect simulator to print "Simulation succeeded" | ||
| 11 | // when the value 25 (0x19) is written to address 100 (0x64) | ||
| 12 | |||
| 13 | // Single-cycle implementation of RISC-V (RV32I) | ||
| 14 | // User-level Instruction Set Architecture V2.2 (May 7, 2017) | ||
| 15 | // Implements a subset of the base integer instructions: | ||
| 16 | // lw, sw | ||
| 17 | // add, sub, and, or, slt, | ||
| 18 | // addi, andi, ori, slti | ||
| 19 | // beq | ||
| 20 | // jal | ||
| 21 | // Exceptions, traps, and interrupts not implemented | ||
| 22 | // little-endian memory | ||
| 23 | |||
| 24 | // 31 32-bit registers x1-x31, x0 hardwired to 0 | ||
| 25 | // R-Type instructions | ||
| 26 | // add, sub, and, or, slt | ||
| 27 | // INSTR rd, rs1, rs2 | ||
| 28 | // Instr[31:25] = funct7 (funct7b5 & opb5 = 1 for sub, 0 for others) | ||
| 29 | // Instr[24:20] = rs2 | ||
| 30 | // Instr[19:15] = rs1 | ||
| 31 | // Instr[14:12] = funct3 | ||
| 32 | // Instr[11:7] = rd | ||
| 33 | // Instr[6:0] = opcode | ||
| 34 | // I-Type Instructions | ||
| 35 | // lw, I-type ALU (addi, andi, ori, slti) | ||
| 36 | // lw: INSTR rd, imm(rs1) | ||
| 37 | // I-type ALU: INSTR rd, rs1, imm (12-bit signed) | ||
| 38 | // Instr[31:20] = imm[11:0] | ||
| 39 | // Instr[24:20] = rs2 | ||
| 40 | // Instr[19:15] = rs1 | ||
| 41 | // Instr[14:12] = funct3 | ||
| 42 | // Instr[11:7] = rd | ||
| 43 | // Instr[6:0] = opcode | ||
| 44 | // S-Type Instruction | ||
| 45 | // sw rs2, imm(rs1) (store rs2 into address specified by rs1 + immm) | ||
| 46 | // Instr[31:25] = imm[11:5] (offset[11:5]) | ||
| 47 | // Instr[24:20] = rs2 (src) | ||
| 48 | // Instr[19:15] = rs1 (base) | ||
| 49 | // Instr[14:12] = funct3 | ||
| 50 | // Instr[11:7] = imm[4:0] (offset[4:0]) | ||
| 51 | // Instr[6:0] = opcode | ||
| 52 | // B-Type Instruction | ||
| 53 | // beq rs1, rs2, imm (PCTarget = PC + (signed imm x 2)) | ||
| 54 | // Instr[31:25] = imm[12], imm[10:5] | ||
| 55 | // Instr[24:20] = rs2 | ||
| 56 | // Instr[19:15] = rs1 | ||
| 57 | // Instr[14:12] = funct3 | ||
| 58 | // Instr[11:7] = imm[4:1], imm[11] | ||
| 59 | // Instr[6:0] = opcode | ||
| 60 | // J-Type Instruction | ||
| 61 | // jal rd, imm (signed imm is multiplied by 2 and added to PC, rd = PC+4) | ||
| 62 | // Instr[31:12] = imm[20], imm[10:1], imm[11], imm[19:12] | ||
| 63 | // Instr[11:7] = rd | ||
| 64 | // Instr[6:0] = opcode | ||
| 65 | |||
| 66 | // Instruction opcode funct3 funct7 | ||
| 67 | // add 0110011 000 0000000 | ||
| 68 | // sub 0110011 000 0100000 | ||
| 69 | // and 0110011 111 0000000 | ||
| 70 | // or 0110011 110 0000000 | ||
| 71 | // slt 0110011 010 0000000 | ||
| 72 | // addi 0010011 000 immediate | ||
| 73 | // andi 0010011 111 immediate | ||
| 74 | // ori 0010011 110 immediate | ||
| 75 | // slti 0010011 010 immediate | ||
| 76 | // beq 1100011 000 immediate | ||
| 77 | // lw 0000011 010 immediate | ||
| 78 | // sw 0100011 010 immediate | ||
| 79 | // jal 1101111 immediate immediate | ||
| 80 | |||
| 81 | |||
| 82 | // This part is modified by Dr.Toker | ||
| 83 | module my_computer(input logic clk, reset, | ||
| 84 | input logic[ 9:0] my_sw, | ||
| 85 | output logic[31:0] my_rd, | ||
| 86 | output logic[31:0] my_PC | ||
| 87 | ); | ||
| 88 | |||
| 89 | logic [31:0] PC, Instr, ReadData, WriteData, DataAddr; | ||
| 90 | logic MemWrite; | ||
| 91 | |||
| 92 | // instantiate processor | ||
| 93 | riscvsingle rvsingle(clk, reset, PC, Instr, MemWrite, DataAddr, | ||
| 94 | WriteData, ReadData); | ||
| 95 | // program memory - ROM | ||
| 96 | imem imem(PC, Instr); | ||
| 97 | |||
| 98 | // data memort - RAM | ||
| 99 | dmem dmem(clk, MemWrite, DataAddr, WriteData, ReadData, my_sw, my_rd); | ||
| 100 | |||
| 101 | assign my_PC = PC; | ||
| 102 | |||
| 103 | endmodule | ||
| 104 | |||
| 105 | // ======================================================================= | ||
| 106 | // NEW STUFF ABOUT MEMORIES - MUST REVIEW FIRST | ||
| 107 | // ======================================================================= | ||
| 108 | |||
| 109 | module regfile(input logic clk, | ||
| 110 | input logic we3, | ||
| 111 | input logic [ 4:0] a1, a2, a3, | ||
| 112 | input logic [31:0] wd3, | ||
| 113 | output logic [31:0] rd1, rd2); | ||
| 114 | |||
| 115 | logic [31:0] rf[31:0]; | ||
| 116 | |||
| 117 | // three ported register file | ||
| 118 | // read two ports combinationally (A1/RD1, A2/RD2) | ||
| 119 | // write third port on rising edge of clock (A3/WD3/WE3) | ||
| 120 | // register 0 hardwired to 0 | ||
| 121 | |||
| 122 | always_ff @(posedge clk) | ||
| 123 | if (we3) rf[a3] <= wd3; | ||
| 124 | |||
| 125 | assign rd1 = (a1 != 0) ? rf[a1] : 0; | ||
| 126 | assign rd2 = (a2 != 0) ? rf[a2] : 0; | ||
| 127 | endmodule | ||
| 128 | |||
| 129 | module imem(input logic [31:0] a, | ||
| 130 | output logic [31:0] rd); | ||
| 131 | |||
| 132 | logic [31:0] ROM[63:0]; | ||
| 133 | |||
| 134 | // Initialize the program memory | ||
| 135 | // Simulator : ok | ||
| 136 | // Hardware : For FPGA ok, non-FPGA we need a 3rd party solution to program the FLASH memory (ROM) | ||
| 137 | initial | ||
| 138 | $readmemh("C:\\Users\\onur\\Desktop\\CE_Lab2\\CEL_PROJECT\\riscvtest_rom_image.txt", ROM); | ||
| 139 | |||
| 140 | assign rd = ROM[a[31:2]]; // word aligned | ||
| 141 | endmodule | ||
| 142 | |||
| 143 | // This part is modified by Dr. Toker | ||
| 144 | module dmem(input logic clk, we, | ||
| 145 | input logic [31:0] a, wd, | ||
| 146 | output logic [31:0] rd, | ||
| 147 | input logic [ 7:0] my_sw, | ||
| 148 | output logic [31:0] my_rd); | ||
| 149 | |||
| 150 | logic [31:0] RAM[127:0]; | ||
| 151 | |||
| 152 | assign rd = RAM[a[31:2]]; // word aligned | ||
| 153 | |||
| 154 | always_ff @(posedge clk) | ||
| 155 | begin | ||
| 156 | if (we) RAM[a[31:2]] <= wd; | ||
| 157 | |||
| 158 | // Used only for simulation, does not correspond to ANY hardware | ||
| 159 | if (we) | ||
| 160 | $display("Write RAM[%08x]=%08x at %t", a[31:2], wd, $time); | ||
| 161 | else | ||
| 162 | $display("Read RAM[%08x]=%08x at %t", a[31:2], rd, $time); | ||
| 163 | |||
| 164 | end | ||
| 165 | |||
| 166 | assign my_rd = RAM[my_sw[7:2]]; | ||
| 167 | |||
| 168 | // Initialize the program memory | ||
| 169 | // Simulator : ok | ||
| 170 | // Hardware : For FPGA ok, non-FPGA we need a 3rd party solution to program the DATA memory (RAM) | ||
| 171 | initial | ||
| 172 | $readmemh("C:\\Users\\onur\\Desktop\\CE_Lab2\\CEL_PROJECT\\riscvtest_ram_image.txt", RAM); | ||
| 173 | |||
| 174 | endmodule | ||
| 175 | |||
| 176 | module flopr #(parameter WIDTH = 8) | ||
| 177 | (input logic clk, reset, | ||
| 178 | input logic [WIDTH-1:0] d, | ||
| 179 | output logic [WIDTH-1:0] q); | ||
| 180 | |||
| 181 | always_ff @(posedge clk, posedge reset) | ||
| 182 | if (reset) q <= 0; | ||
| 183 | else q <= d; | ||
| 184 | endmodule | ||
| 185 | |||
| 186 | // ======================================================================= | ||
| 187 | // OLD STUFF - Component Instantiation or New Combinatorial Designs | ||
| 188 | // ======================================================================= | ||
| 189 | |||
| 190 | module riscvsingle(input logic clk, reset, | ||
| 191 | output logic [31:0] PC, | ||
| 192 | input logic [31:0] Instr, | ||
| 193 | output logic MemWrite, | ||
| 194 | output logic [31:0] ALUResult, WriteData, | ||
| 195 | input logic [31:0] ReadData); | ||
| 196 | |||
| 197 | logic ALUSrc, RegWrite, Jump, Zero; | ||
| 198 | logic [1:0] ResultSrc, ImmSrc; | ||
| 199 | logic [2:0] ALUControl; | ||
| 200 | |||
| 201 | controller c(Instr[6:0], Instr[14:12], Instr[30], Zero, | ||
| 202 | ResultSrc, MemWrite, PCSrc, | ||
| 203 | ALUSrc, RegWrite, Jump, | ||
| 204 | ImmSrc, ALUControl); | ||
| 205 | datapath dp(clk, reset, ResultSrc, PCSrc, | ||
| 206 | ALUSrc, RegWrite, | ||
| 207 | ImmSrc, ALUControl, | ||
| 208 | Zero, PC, Instr, | ||
| 209 | ALUResult, WriteData, ReadData); | ||
| 210 | endmodule | ||
| 211 | |||
| 212 | module controller(input logic [6:0] op, | ||
| 213 | input logic [2:0] funct3, | ||
| 214 | input logic funct7b5, | ||
| 215 | input logic Zero, | ||
| 216 | output logic [1:0] ResultSrc, | ||
| 217 | output logic MemWrite, | ||
| 218 | output logic PCSrc, ALUSrc, | ||
| 219 | output logic RegWrite, Jump, | ||
| 220 | output logic [1:0] ImmSrc, | ||
| 221 | output logic [2:0] ALUControl); | ||
| 222 | |||
| 223 | logic [1:0] ALUOp; | ||
| 224 | logic Branch; | ||
| 225 | |||
| 226 | maindec md(op, ResultSrc, MemWrite, Branch, | ||
| 227 | ALUSrc, RegWrite, Jump, ImmSrc, ALUOp); | ||
| 228 | aludec ad(op[5], funct3, funct7b5, ALUOp, ALUControl); | ||
| 229 | |||
| 230 | assign PCSrc = Branch & Zero | Jump; | ||
| 231 | endmodule | ||
| 232 | |||
| 233 | module maindec(input logic [6:0] op, | ||
| 234 | output logic [1:0] ResultSrc, | ||
| 235 | output logic MemWrite, | ||
| 236 | output logic Branch, ALUSrc, | ||
| 237 | output logic RegWrite, Jump, | ||
| 238 | output logic [1:0] ImmSrc, | ||
| 239 | output logic [1:0] ALUOp); | ||
| 240 | |||
| 241 | logic [10:0] controls; | ||
| 242 | |||
| 243 | assign {RegWrite, ImmSrc, ALUSrc, MemWrite, | ||
| 244 | ResultSrc, Branch, ALUOp, Jump} = controls; | ||
| 245 | |||
| 246 | always_comb | ||
| 247 | case(op) | ||
| 248 | // RegWrite_ImmSrc_ALUSrc_MemWrite_ResultSrc_Branch_ALUOp_Jump | ||
| 249 | 7'b0000011: controls = 11'b1_00_1_0_01_0_00_0; // lw | ||
| 250 | 7'b0100011: controls = 11'b0_01_1_1_00_0_00_0; // sw | ||
| 251 | 7'b0110011: controls = 11'b1_xx_0_0_00_0_10_0; // R-type | ||
| 252 | 7'b1100011: controls = 11'b0_10_0_0_00_1_01_0; // beq | ||
| 253 | 7'b0010011: controls = 11'b1_00_1_0_00_0_10_0; // I-type ALU | ||
| 254 | 7'b1101111: controls = 11'b1_11_0_0_10_0_00_1; // jal | ||
| 255 | default: controls = 11'bx_xx_x_x_xx_x_xx_x; // non-implemented instruction | ||
| 256 | endcase | ||
| 257 | endmodule | ||
| 258 | |||
| 259 | module aludec(input logic opb5, | ||
| 260 | input logic [2:0] funct3, | ||
| 261 | input logic funct7b5, | ||
| 262 | input logic [1:0] ALUOp, | ||
| 263 | output logic [2:0] ALUControl); | ||
| 264 | |||
| 265 | logic RtypeSub; | ||
| 266 | assign RtypeSub = funct7b5 & opb5; // TRUE for R-type subtract instruction | ||
| 267 | |||
| 268 | always_comb | ||
| 269 | case(ALUOp) | ||
| 270 | 2'b00: ALUControl = 3'b000; // addition | ||
| 271 | 2'b01: ALUControl = 3'b001; // subtraction | ||
| 272 | default: case(funct3) // R-type or I-type ALU | ||
| 273 | 3'b000: if (RtypeSub) | ||
| 274 | ALUControl = 3'b001; // sub | ||
| 275 | else | ||
| 276 | ALUControl = 3'b000; // add, addi | ||
| 277 | 3'b010: ALUControl = 3'b101; // slt, slti | ||
| 278 | 3'b110: ALUControl = 3'b011; // or, ori | ||
| 279 | 3'b111: ALUControl = 3'b010; // and, andi | ||
| 280 | default: ALUControl = 3'bxxx; // ??? | ||
| 281 | endcase | ||
| 282 | endcase | ||
| 283 | endmodule | ||
| 284 | |||
| 285 | module datapath(input logic clk, reset, | ||
| 286 | input logic [1:0] ResultSrc, | ||
| 287 | input logic PCSrc, ALUSrc, | ||
| 288 | input logic RegWrite, | ||
| 289 | input logic [1:0] ImmSrc, | ||
| 290 | input logic [2:0] ALUControl, | ||
| 291 | output logic Zero, | ||
| 292 | output logic [31:0] PC, | ||
| 293 | input logic [31:0] Instr, | ||
| 294 | output logic [31:0] ALUResult, WriteData, | ||
| 295 | input logic [31:0] ReadData); | ||
| 296 | |||
| 297 | logic [31:0] PCNext, PCPlus4, PCTarget; | ||
| 298 | logic [31:0] ImmExt; | ||
| 299 | logic [31:0] SrcA, SrcB; | ||
| 300 | logic [31:0] Result; | ||
| 301 | |||
| 302 | // next PC logic | ||
| 303 | flopr #(32) pcreg(clk, reset, PCNext, PC); | ||
| 304 | adder pcadd4(PC, 32'd4, PCPlus4); | ||
| 305 | adder pcaddbranch(PC, ImmExt, PCTarget); | ||
| 306 | mux2 #(32) pcmux(PCPlus4, PCTarget, PCSrc, PCNext); | ||
| 307 | |||
| 308 | // register file logic | ||
| 309 | regfile rf(clk, RegWrite, Instr[19:15], Instr[24:20], | ||
| 310 | Instr[11:7], Result, SrcA, WriteData); | ||
| 311 | extend ext(Instr[31:7], ImmSrc, ImmExt); | ||
| 312 | |||
| 313 | // ALU logic | ||
| 314 | mux2 #(32) srcbmux(WriteData, ImmExt, ALUSrc, SrcB); | ||
| 315 | alu alu(SrcA, SrcB, ALUControl, ALUResult, Zero); | ||
| 316 | mux3 #(32) resultmux(ALUResult, ReadData, PCPlus4, ResultSrc, Result); | ||
| 317 | endmodule | ||
| 318 | |||
| 319 | |||
| 320 | module adder(input [31:0] a, b, | ||
| 321 | output [31:0] y); | ||
| 322 | |||
| 323 | assign y = a + b; | ||
| 324 | endmodule | ||
| 325 | |||
| 326 | module extend(input logic [31:7] instr, | ||
| 327 | input logic [1:0] immsrc, | ||
| 328 | output logic [31:0] immext); | ||
| 329 | |||
| 330 | always_comb | ||
| 331 | case(immsrc) | ||
| 332 | // I-type | ||
| 333 | 2'b00: immext = {{20{instr[31]}}, instr[31:20]}; | ||
| 334 | // S-type (stores) | ||
| 335 | 2'b01: immext = {{20{instr[31]}}, instr[31:25], instr[11:7]}; | ||
| 336 | // B-type (branches) | ||
| 337 | 2'b10: immext = {{20{instr[31]}}, instr[7], instr[30:25], instr[11:8], 1'b0}; | ||
| 338 | // J-type (jal) | ||
| 339 | 2'b11: immext = {{12{instr[31]}}, instr[19:12], instr[20], instr[30:21], 1'b0}; | ||
| 340 | default: immext = 32'bx; // undefined | ||
| 341 | endcase | ||
| 342 | endmodule | ||
| 343 | |||
| 344 | module mux2 #(parameter WIDTH = 8) | ||
| 345 | (input logic [WIDTH-1:0] d0, d1, | ||
| 346 | input logic s, | ||
| 347 | output logic [WIDTH-1:0] y); | ||
| 348 | |||
| 349 | assign y = s ? d1 : d0; | ||
| 350 | endmodule | ||
| 351 | |||
| 352 | module mux3 #(parameter WIDTH = 8) | ||
| 353 | (input logic [WIDTH-1:0] d0, d1, d2, | ||
| 354 | input logic [1:0] s, | ||
| 355 | output logic [WIDTH-1:0] y); | ||
| 356 | |||
| 357 | assign y = s[1] ? d2 : (s[0] ? d1 : d0); | ||
| 358 | endmodule | ||
| 359 | |||
| 360 | module alu(input logic [31:0] a, b, | ||
| 361 | input logic [2:0] alucontrol, | ||
| 362 | output logic [31:0] result, | ||
| 363 | output logic zero); | ||
| 364 | |||
| 365 | logic [31:0] condinvb, sum; | ||
| 366 | logic v; // overflow | ||
| 367 | logic isAddSub; // true when is add or subtract operation | ||
| 368 | |||
| 369 | assign condinvb = alucontrol[0] ? ~b : b; | ||
| 370 | assign sum = a + condinvb + alucontrol[0]; | ||
| 371 | assign isAddSub = ~alucontrol[2] & ~alucontrol[1] | | ||
| 372 | ~alucontrol[1] & alucontrol[0]; | ||
| 373 | |||
| 374 | always_comb | ||
| 375 | case (alucontrol) | ||
| 376 | 3'b000: result = sum; // add | ||
| 377 | 3'b001: result = sum; // subtract | ||
| 378 | 3'b010: result = a & b; // and | ||
| 379 | 3'b011: result = a | b; // or | ||
| 380 | 3'b100: result = a ^ b; // xor | ||
| 381 | 3'b101: result = sum[31] ^ v; // slt | ||
| 382 | 3'b110: result = a << b[4:0]; // sll | ||
| 383 | 3'b111: result = a >> b[4:0]; // srl | ||
| 384 | default: result = 32'bx; | ||
| 385 | endcase | ||
| 386 | |||
| 387 | assign zero = (result == 32'b0); | ||
| 388 | assign v = ~(alucontrol[0] ^ a[31] ^ b[31]) & (a[31] ^ sum[31]) & isAddSub; | ||
| 389 | |||
| 390 | endmodule | ||
diff --git a/riscvtest.s b/riscvtest.s new file mode 100644 index 0000000..19dc756 --- /dev/null +++ b/riscvtest.s | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | # riscvtest.s | ||
| 2 | # Sarah.Harris@unlv.edu | ||
| 3 | # David_Harris@hmc.edu | ||
| 4 | # 27 Oct 2020 | ||
| 5 | # | ||
| 6 | # Test the RISC-V processor. | ||
| 7 | # add, sub, and, or, slt, addi, lw, sw, beq, jal | ||
| 8 | # If successful, it should write the value 25 to address 100 | ||
| 9 | |||
| 10 | # RISC-V Assembly Description Address Machine Code | ||
| 11 | main: addi x2, x0, 5 # x2 = 5 0 00500113 | ||
| 12 | addi x3, x0, 12 # x3 = 12 4 00C00193 | ||
| 13 | addi x7, x3, -9 # x7 = (12 - 9) = 3 8 FF718393 | ||
| 14 | or x4, x7, x2 # x4 = (3 OR 5) = 7 C 0023E233 | ||
| 15 | and x5, x3, x4 # x5 = (12 AND 7) = 4 10 0041F2B3 | ||
| 16 | add x5, x5, x4 # x5 = (4 + 7) = 11 14 004282B3 | ||
| 17 | beq x5, x7, end # shouldn't be taken 18 02728863 | ||
| 18 | slt x4, x3, x4 # x4 = (12 < 7) = 0 1C 0041A233 | ||
| 19 | beq x4, x0, around # should be taken 20 00020463 | ||
| 20 | addi x5, x0, 0 # shouldn't happen 24 00000293 | ||
| 21 | around: slt x4, x7, x2 # x4 = (3 < 5) = 1 28 0023A233 | ||
| 22 | add x7, x4, x5 # x7 = (1 + 11) = 12 2C 005203B3 | ||
| 23 | sub x7, x7, x2 # x7 = (12 - 5) = 7 30 402383B3 | ||
| 24 | sw x7, 84(x3) # [96] = 7 34 0471AA23 | ||
| 25 | lw x2, 96(x0) # x2 = [96] = 7 38 06002103 | ||
| 26 | add x9, x2, x5 # x9 = (7 + 11) = 18 3C 005104B3 | ||
| 27 | jal x3, end # jump to end, x3 = 0x44 40 008001EF | ||
| 28 | addi x2, x0, 1 # shouldn't happen 44 00100113 | ||
| 29 | end: add x2, x2, x9 # x2 = (7 + 18) = 25 48 00910133 | ||
| 30 | sw x2, 0x20(x3) # mem[100] = 25 4C 0221A023 | ||
| 31 | done: beq x2, x2, done # infinite loop 50 00210063 | ||
| 32 | |||
| 33 | \ No newline at end of file | ||
diff --git a/riscvtest_ram_image.txt b/riscvtest_ram_image.txt new file mode 100644 index 0000000..9e78f77 --- /dev/null +++ b/riscvtest_ram_image.txt | |||
| @@ -0,0 +1,1024 @@ | |||
| 1 | 00000000 | ||
| 2 | 00000001 | ||
| 3 | 00000002 | ||
| 4 | 00000003 | ||
| 5 | 00000004 | ||
| 6 | 00000005 | ||
| 7 | 00000006 | ||
| 8 | 00000007 | ||
| 9 | 00000008 | ||
| 10 | 00000009 | ||
| 11 | 0000000A | ||
| 12 | 0000000B | ||
| 13 | 0000000C | ||
| 14 | 0000000D | ||
| 15 | 0000000E | ||
| 16 | 0000000F | ||
| 17 | 00000010 | ||
| 18 | 00000011 | ||
| 19 | 00000012 | ||
| 20 | 00000013 | ||
| 21 | 00000014 | ||
| 22 | 00000015 | ||
| 23 | 00000016 | ||
| 24 | 00000017 | ||
| 25 | 00000018 | ||
| 26 | 00000019 | ||
| 27 | 0000001A | ||
| 28 | 0000001B | ||
| 29 | 0000001C | ||
| 30 | 0000001D | ||
| 31 | 0000001E | ||
| 32 | 0000001F | ||
| 33 | 00000020 | ||
| 34 | 00000021 | ||
| 35 | 00000022 | ||
| 36 | 00000023 | ||
| 37 | 00000024 | ||
| 38 | 00000025 | ||
| 39 | 00000026 | ||
| 40 | 00000027 | ||
| 41 | 00000028 | ||
| 42 | 00000029 | ||
| 43 | 0000002A | ||
| 44 | 0000002B | ||
| 45 | 0000002C | ||
| 46 | 0000002D | ||
| 47 | 0000002E | ||
| 48 | 0000002F | ||
| 49 | 00000030 | ||
| 50 | 00000031 | ||
| 51 | 00000032 | ||
| 52 | 00000033 | ||
| 53 | 00000034 | ||
| 54 | 00000035 | ||
| 55 | 00000036 | ||
| 56 | 00000037 | ||
| 57 | 00000038 | ||
| 58 | 00000039 | ||
| 59 | 0000003A | ||
| 60 | 0000003B | ||
| 61 | 0000003C | ||
| 62 | 0000003D | ||
| 63 | 0000003E | ||
| 64 | 0000003F | ||
| 65 | 00000040 | ||
| 66 | 00000041 | ||
| 67 | 00000042 | ||
| 68 | 00000043 | ||
| 69 | 00000044 | ||
| 70 | 00000045 | ||
| 71 | 00000046 | ||
| 72 | 00000047 | ||
| 73 | 00000048 | ||
| 74 | 00000049 | ||
| 75 | 0000004A | ||
| 76 | 0000004B | ||
| 77 | 0000004C | ||
| 78 | 0000004D | ||
| 79 | 0000004E | ||
| 80 | 0000004F | ||
| 81 | 00000050 | ||
| 82 | 00000051 | ||
| 83 | 00000052 | ||
| 84 | 00000053 | ||
| 85 | 00000054 | ||
| 86 | 00000055 | ||
| 87 | 00000056 | ||
| 88 | 00000057 | ||
| 89 | 00000058 | ||
| 90 | 00000059 | ||
| 91 | 0000005A | ||
| 92 | 0000005B | ||
| 93 | 0000005C | ||
| 94 | 0000005D | ||
| 95 | 0000005E | ||
| 96 | 0000005F | ||
| 97 | 00000060 | ||
| 98 | 00000061 | ||
| 99 | 00000062 | ||
| 100 | 00000063 | ||
| 101 | 00000064 | ||
| 102 | 00000065 | ||
| 103 | 00000066 | ||
| 104 | 00000067 | ||
| 105 | 00000068 | ||
| 106 | 00000069 | ||
| 107 | 0000006A | ||
| 108 | 0000006B | ||
| 109 | 0000006C | ||
| 110 | 0000006D | ||
| 111 | 0000006E | ||
| 112 | 0000006F | ||
| 113 | 00000070 | ||
| 114 | 00000071 | ||
| 115 | 00000072 | ||
| 116 | 00000073 | ||
| 117 | 00000074 | ||
| 118 | 00000075 | ||
| 119 | 00000076 | ||
| 120 | 00000077 | ||
| 121 | 00000078 | ||
| 122 | 00000079 | ||
| 123 | 0000007A | ||
| 124 | 0000007B | ||
| 125 | 0000007C | ||
| 126 | 0000007D | ||
| 127 | 0000007E | ||
| 128 | 0000007F | ||
| 129 | 00000080 | ||
| 130 | 00000081 | ||
| 131 | 00000082 | ||
| 132 | 00000083 | ||
| 133 | 00000084 | ||
| 134 | 00000085 | ||
| 135 | 00000086 | ||
| 136 | 00000087 | ||
| 137 | 00000088 | ||
| 138 | 00000089 | ||
| 139 | 0000008A | ||
| 140 | 0000008B | ||
| 141 | 0000008C | ||
| 142 | 0000008D | ||
| 143 | 0000008E | ||
| 144 | 0000008F | ||
| 145 | 00000090 | ||
| 146 | 00000091 | ||
| 147 | 00000092 | ||
| 148 | 00000093 | ||
| 149 | 00000094 | ||
| 150 | 00000095 | ||
| 151 | 00000096 | ||
| 152 | 00000097 | ||
| 153 | 00000098 | ||
| 154 | 00000099 | ||
| 155 | 0000009A | ||
| 156 | 0000009B | ||
| 157 | 0000009C | ||
| 158 | 0000009D | ||
| 159 | 0000009E | ||
| 160 | 0000009F | ||
| 161 | 000000A0 | ||
| 162 | 000000A1 | ||
| 163 | 000000A2 | ||
| 164 | 000000A3 | ||
| 165 | 000000A4 | ||
| 166 | 000000A5 | ||
| 167 | 000000A6 | ||
| 168 | 000000A7 | ||
| 169 | 000000A8 | ||
| 170 | 000000A9 | ||
| 171 | 000000AA | ||
| 172 | 000000AB | ||
| 173 | 000000AC | ||
| 174 | 000000AD | ||
| 175 | 000000AE | ||
| 176 | 000000AF | ||
| 177 | 000000B0 | ||
| 178 | 000000B1 | ||
| 179 | 000000B2 | ||
| 180 | 000000B3 | ||
| 181 | 000000B4 | ||
| 182 | 000000B5 | ||
| 183 | 000000B6 | ||
| 184 | 000000B7 | ||
| 185 | 000000B8 | ||
| 186 | 000000B9 | ||
| 187 | 000000BA | ||
| 188 | 000000BB | ||
| 189 | 000000BC | ||
| 190 | 000000BD | ||
| 191 | 000000BE | ||
| 192 | 000000BF | ||
| 193 | 000000C0 | ||
| 194 | 000000C1 | ||
| 195 | 000000C2 | ||
| 196 | 000000C3 | ||
| 197 | 000000C4 | ||
| 198 | 000000C5 | ||
| 199 | 000000C6 | ||
| 200 | 000000C7 | ||
| 201 | 000000C8 | ||
| 202 | 000000C9 | ||
| 203 | 000000CA | ||
| 204 | 000000CB | ||
| 205 | 000000CC | ||
| 206 | 000000CD | ||
| 207 | 000000CE | ||
| 208 | 000000CF | ||
| 209 | 000000D0 | ||
| 210 | 000000D1 | ||
| 211 | 000000D2 | ||
| 212 | 000000D3 | ||
| 213 | 000000D4 | ||
| 214 | 000000D5 | ||
| 215 | 000000D6 | ||
| 216 | 000000D7 | ||
| 217 | 000000D8 | ||
| 218 | 000000D9 | ||
| 219 | 000000DA | ||
| 220 | 000000DB | ||
| 221 | 000000DC | ||
| 222 | 000000DD | ||
| 223 | 000000DE | ||
| 224 | 000000DF | ||
| 225 | 000000E0 | ||
| 226 | 000000E1 | ||
| 227 | 000000E2 | ||
| 228 | 000000E3 | ||
| 229 | 000000E4 | ||
| 230 | 000000E5 | ||
| 231 | 000000E6 | ||
| 232 | 000000E7 | ||
| 233 | 000000E8 | ||
| 234 | 000000E9 | ||
| 235 | 000000EA | ||
| 236 | 000000EB | ||
| 237 | 000000EC | ||
| 238 | 000000ED | ||
| 239 | 000000EE | ||
| 240 | 000000EF | ||
| 241 | 000000F0 | ||
| 242 | 000000F1 | ||
| 243 | 000000F2 | ||
| 244 | 000000F3 | ||
| 245 | 000000F4 | ||
| 246 | 000000F5 | ||
| 247 | 000000F6 | ||
| 248 | 000000F7 | ||
| 249 | 000000F8 | ||
| 250 | 000000F9 | ||
| 251 | 000000FA | ||
| 252 | 000000FB | ||
| 253 | 000000FC | ||
| 254 | 000000FD | ||
| 255 | 000000FE | ||
| 256 | 000000FF | ||
| 257 | 00000100 | ||
| 258 | 00000101 | ||
| 259 | 00000102 | ||
| 260 | 00000103 | ||
| 261 | 00000104 | ||
| 262 | 00000105 | ||
| 263 | 00000106 | ||
| 264 | 00000107 | ||
| 265 | 00000108 | ||
| 266 | 00000109 | ||
| 267 | 0000010A | ||
| 268 | 0000010B | ||
| 269 | 0000010C | ||
| 270 | 0000010D | ||
| 271 | 0000010E | ||
| 272 | 0000010F | ||
| 273 | 00000110 | ||
| 274 | 00000111 | ||
| 275 | 00000112 | ||
| 276 | 00000113 | ||
| 277 | 00000114 | ||
| 278 | 00000115 | ||
| 279 | 00000116 | ||
| 280 | 00000117 | ||
| 281 | 00000118 | ||
| 282 | 00000119 | ||
| 283 | 0000011A | ||
| 284 | 0000011B | ||
| 285 | 0000011C | ||
| 286 | 0000011D | ||
| 287 | 0000011E | ||
| 288 | 0000011F | ||
| 289 | 00000120 | ||
| 290 | 00000121 | ||
| 291 | 00000122 | ||
| 292 | 00000123 | ||
| 293 | 00000124 | ||
| 294 | 00000125 | ||
| 295 | 00000126 | ||
| 296 | 00000127 | ||
| 297 | 00000128 | ||
| 298 | 00000129 | ||
| 299 | 0000012A | ||
| 300 | 0000012B | ||
| 301 | 0000012C | ||
| 302 | 0000012D | ||
| 303 | 0000012E | ||
| 304 | 0000012F | ||
| 305 | 00000130 | ||
| 306 | 00000131 | ||
| 307 | 00000132 | ||
| 308 | 00000133 | ||
| 309 | 00000134 | ||
| 310 | 00000135 | ||
| 311 | 00000136 | ||
| 312 | 00000137 | ||
| 313 | 00000138 | ||
| 314 | 00000139 | ||
| 315 | 0000013A | ||
| 316 | 0000013B | ||
| 317 | 0000013C | ||
| 318 | 0000013D | ||
| 319 | 0000013E | ||
| 320 | 0000013F | ||
| 321 | 00000140 | ||
| 322 | 00000141 | ||
| 323 | 00000142 | ||
| 324 | 00000143 | ||
| 325 | 00000144 | ||
| 326 | 00000145 | ||
| 327 | 00000146 | ||
| 328 | 00000147 | ||
| 329 | 00000148 | ||
| 330 | 00000149 | ||
| 331 | 0000014A | ||
| 332 | 0000014B | ||
| 333 | 0000014C | ||
| 334 | 0000014D | ||
| 335 | 0000014E | ||
| 336 | 0000014F | ||
| 337 | 00000150 | ||
| 338 | 00000151 | ||
| 339 | 00000152 | ||
| 340 | 00000153 | ||
| 341 | 00000154 | ||
| 342 | 00000155 | ||
| 343 | 00000156 | ||
| 344 | 00000157 | ||
| 345 | 00000158 | ||
| 346 | 00000159 | ||
| 347 | 0000015A | ||
| 348 | 0000015B | ||
| 349 | 0000015C | ||
| 350 | 0000015D | ||
| 351 | 0000015E | ||
| 352 | 0000015F | ||
| 353 | 00000160 | ||
| 354 | 00000161 | ||
| 355 | 00000162 | ||
| 356 | 00000163 | ||
| 357 | 00000164 | ||
| 358 | 00000165 | ||
| 359 | 00000166 | ||
| 360 | 00000167 | ||
| 361 | 00000168 | ||
| 362 | 00000169 | ||
| 363 | 0000016A | ||
| 364 | 0000016B | ||
| 365 | 0000016C | ||
| 366 | 0000016D | ||
| 367 | 0000016E | ||
| 368 | 0000016F | ||
| 369 | 00000170 | ||
| 370 | 00000171 | ||
| 371 | 00000172 | ||
| 372 | 00000173 | ||
| 373 | 00000174 | ||
| 374 | 00000175 | ||
| 375 | 00000176 | ||
| 376 | 00000177 | ||
| 377 | 00000178 | ||
| 378 | 00000179 | ||
| 379 | 0000017A | ||
| 380 | 0000017B | ||
| 381 | 0000017C | ||
| 382 | 0000017D | ||
| 383 | 0000017E | ||
| 384 | 0000017F | ||
| 385 | 00000180 | ||
| 386 | 00000181 | ||
| 387 | 00000182 | ||
| 388 | 00000183 | ||
| 389 | 00000184 | ||
| 390 | 00000185 | ||
| 391 | 00000186 | ||
| 392 | 00000187 | ||
| 393 | 00000188 | ||
| 394 | 00000189 | ||
| 395 | 0000018A | ||
| 396 | 0000018B | ||
| 397 | 0000018C | ||
| 398 | 0000018D | ||
| 399 | 0000018E | ||
| 400 | 0000018F | ||
| 401 | 00000190 | ||
| 402 | 00000191 | ||
| 403 | 00000192 | ||
| 404 | 00000193 | ||
| 405 | 00000194 | ||
| 406 | 00000195 | ||
| 407 | 00000196 | ||
| 408 | 00000197 | ||
| 409 | 00000198 | ||
| 410 | 00000199 | ||
| 411 | 0000019A | ||
| 412 | 0000019B | ||
| 413 | 0000019C | ||
| 414 | 0000019D | ||
| 415 | 0000019E | ||
| 416 | 0000019F | ||
| 417 | 000001A0 | ||
| 418 | 000001A1 | ||
| 419 | 000001A2 | ||
| 420 | 000001A3 | ||
| 421 | 000001A4 | ||
| 422 | 000001A5 | ||
| 423 | 000001A6 | ||
| 424 | 000001A7 | ||
| 425 | 000001A8 | ||
| 426 | 000001A9 | ||
| 427 | 000001AA | ||
| 428 | 000001AB | ||
| 429 | 000001AC | ||
| 430 | 000001AD | ||
| 431 | 000001AE | ||
| 432 | 000001AF | ||
| 433 | 000001B0 | ||
| 434 | 000001B1 | ||
| 435 | 000001B2 | ||
| 436 | 000001B3 | ||
| 437 | 000001B4 | ||
| 438 | 000001B5 | ||
| 439 | 000001B6 | ||
| 440 | 000001B7 | ||
| 441 | 000001B8 | ||
| 442 | 000001B9 | ||
| 443 | 000001BA | ||
| 444 | 000001BB | ||
| 445 | 000001BC | ||
| 446 | 000001BD | ||
| 447 | 000001BE | ||
| 448 | 000001BF | ||
| 449 | 000001C0 | ||
| 450 | 000001C1 | ||
| 451 | 000001C2 | ||
| 452 | 000001C3 | ||
| 453 | 000001C4 | ||
| 454 | 000001C5 | ||
| 455 | 000001C6 | ||
| 456 | 000001C7 | ||
| 457 | 000001C8 | ||
| 458 | 000001C9 | ||
| 459 | 000001CA | ||
| 460 | 000001CB | ||
| 461 | 000001CC | ||
| 462 | 000001CD | ||
| 463 | 000001CE | ||
| 464 | 000001CF | ||
| 465 | 000001D0 | ||
| 466 | 000001D1 | ||
| 467 | 000001D2 | ||
| 468 | 000001D3 | ||
| 469 | 000001D4 | ||
| 470 | 000001D5 | ||
| 471 | 000001D6 | ||
| 472 | 000001D7 | ||
| 473 | 000001D8 | ||
| 474 | 000001D9 | ||
| 475 | 000001DA | ||
| 476 | 000001DB | ||
| 477 | 000001DC | ||
| 478 | 000001DD | ||
| 479 | 000001DE | ||
| 480 | 000001DF | ||
| 481 | 000001E0 | ||
| 482 | 000001E1 | ||
| 483 | 000001E2 | ||
| 484 | 000001E3 | ||
| 485 | 000001E4 | ||
| 486 | 000001E5 | ||
| 487 | 000001E6 | ||
| 488 | 000001E7 | ||
| 489 | 000001E8 | ||
| 490 | 000001E9 | ||
| 491 | 000001EA | ||
| 492 | 000001EB | ||
| 493 | 000001EC | ||
| 494 | 000001ED | ||
| 495 | 000001EE | ||
| 496 | 000001EF | ||
| 497 | 000001F0 | ||
| 498 | 000001F1 | ||
| 499 | 000001F2 | ||
| 500 | 000001F3 | ||
| 501 | 000001F4 | ||
| 502 | 000001F5 | ||
| 503 | 000001F6 | ||
| 504 | 000001F7 | ||
| 505 | 000001F8 | ||
| 506 | 000001F9 | ||
| 507 | 000001FA | ||
| 508 | 000001FB | ||
| 509 | 000001FC | ||
| 510 | 000001FD | ||
| 511 | 000001FE | ||
| 512 | 000001FF | ||
| 513 | 00000200 | ||
| 514 | 00000201 | ||
| 515 | 00000202 | ||
| 516 | 00000203 | ||
| 517 | 00000204 | ||
| 518 | 00000205 | ||
| 519 | 00000206 | ||
| 520 | 00000207 | ||
| 521 | 00000208 | ||
| 522 | 00000209 | ||
| 523 | 0000020A | ||
| 524 | 0000020B | ||
| 525 | 0000020C | ||
| 526 | 0000020D | ||
| 527 | 0000020E | ||
| 528 | 0000020F | ||
| 529 | 00000210 | ||
| 530 | 00000211 | ||
| 531 | 00000212 | ||
| 532 | 00000213 | ||
| 533 | 00000214 | ||
| 534 | 00000215 | ||
| 535 | 00000216 | ||
| 536 | 00000217 | ||
| 537 | 00000218 | ||
| 538 | 00000219 | ||
| 539 | 0000021A | ||
| 540 | 0000021B | ||
| 541 | 0000021C | ||
| 542 | 0000021D | ||
| 543 | 0000021E | ||
| 544 | 0000021F | ||
| 545 | 00000220 | ||
| 546 | 00000221 | ||
| 547 | 00000222 | ||
| 548 | 00000223 | ||
| 549 | 00000224 | ||
| 550 | 00000225 | ||
| 551 | 00000226 | ||
| 552 | 00000227 | ||
| 553 | 00000228 | ||
| 554 | 00000229 | ||
| 555 | 0000022A | ||
| 556 | 0000022B | ||
| 557 | 0000022C | ||
| 558 | 0000022D | ||
| 559 | 0000022E | ||
| 560 | 0000022F | ||
| 561 | 00000230 | ||
| 562 | 00000231 | ||
| 563 | 00000232 | ||
| 564 | 00000233 | ||
| 565 | 00000234 | ||
| 566 | 00000235 | ||
| 567 | 00000236 | ||
| 568 | 00000237 | ||
| 569 | 00000238 | ||
| 570 | 00000239 | ||
| 571 | 0000023A | ||
| 572 | 0000023B | ||
| 573 | 0000023C | ||
| 574 | 0000023D | ||
| 575 | 0000023E | ||
| 576 | 0000023F | ||
| 577 | 00000240 | ||
| 578 | 00000241 | ||
| 579 | 00000242 | ||
| 580 | 00000243 | ||
| 581 | 00000244 | ||
| 582 | 00000245 | ||
| 583 | 00000246 | ||
| 584 | 00000247 | ||
| 585 | 00000248 | ||
| 586 | 00000249 | ||
| 587 | 0000024A | ||
| 588 | 0000024B | ||
| 589 | 0000024C | ||
| 590 | 0000024D | ||
| 591 | 0000024E | ||
| 592 | 0000024F | ||
| 593 | 00000250 | ||
| 594 | 00000251 | ||
| 595 | 00000252 | ||
| 596 | 00000253 | ||
| 597 | 00000254 | ||
| 598 | 00000255 | ||
| 599 | 00000256 | ||
| 600 | 00000257 | ||
| 601 | 00000258 | ||
| 602 | 00000259 | ||
| 603 | 0000025A | ||
| 604 | 0000025B | ||
| 605 | 0000025C | ||
| 606 | 0000025D | ||
| 607 | 0000025E | ||
| 608 | 0000025F | ||
| 609 | 00000260 | ||
| 610 | 00000261 | ||
| 611 | 00000262 | ||
| 612 | 00000263 | ||
| 613 | 00000264 | ||
| 614 | 00000265 | ||
| 615 | 00000266 | ||
| 616 | 00000267 | ||
| 617 | 00000268 | ||
| 618 | 00000269 | ||
| 619 | 0000026A | ||
| 620 | 0000026B | ||
| 621 | 0000026C | ||
| 622 | 0000026D | ||
| 623 | 0000026E | ||
| 624 | 0000026F | ||
| 625 | 00000270 | ||
| 626 | 00000271 | ||
| 627 | 00000272 | ||
| 628 | 00000273 | ||
| 629 | 00000274 | ||
| 630 | 00000275 | ||
| 631 | 00000276 | ||
| 632 | 00000277 | ||
| 633 | 00000278 | ||
| 634 | 00000279 | ||
| 635 | 0000027A | ||
| 636 | 0000027B | ||
| 637 | 0000027C | ||
| 638 | 0000027D | ||
| 639 | 0000027E | ||
| 640 | 0000027F | ||
| 641 | 00000280 | ||
| 642 | 00000281 | ||
| 643 | 00000282 | ||
| 644 | 00000283 | ||
| 645 | 00000284 | ||
| 646 | 00000285 | ||
| 647 | 00000286 | ||
| 648 | 00000287 | ||
| 649 | 00000288 | ||
| 650 | 00000289 | ||
| 651 | 0000028A | ||
| 652 | 0000028B | ||
| 653 | 0000028C | ||
| 654 | 0000028D | ||
| 655 | 0000028E | ||
| 656 | 0000028F | ||
| 657 | 00000290 | ||
| 658 | 00000291 | ||
| 659 | 00000292 | ||
| 660 | 00000293 | ||
| 661 | 00000294 | ||
| 662 | 00000295 | ||
| 663 | 00000296 | ||
| 664 | 00000297 | ||
| 665 | 00000298 | ||
| 666 | 00000299 | ||
| 667 | 0000029A | ||
| 668 | 0000029B | ||
| 669 | 0000029C | ||
| 670 | 0000029D | ||
| 671 | 0000029E | ||
| 672 | 0000029F | ||
| 673 | 000002A0 | ||
| 674 | 000002A1 | ||
| 675 | 000002A2 | ||
| 676 | 000002A3 | ||
| 677 | 000002A4 | ||
| 678 | 000002A5 | ||
| 679 | 000002A6 | ||
| 680 | 000002A7 | ||
| 681 | 000002A8 | ||
| 682 | 000002A9 | ||
| 683 | 000002AA | ||
| 684 | 000002AB | ||
| 685 | 000002AC | ||
| 686 | 000002AD | ||
| 687 | 000002AE | ||
| 688 | 000002AF | ||
| 689 | 000002B0 | ||
| 690 | 000002B1 | ||
| 691 | 000002B2 | ||
| 692 | 000002B3 | ||
| 693 | 000002B4 | ||
| 694 | 000002B5 | ||
| 695 | 000002B6 | ||
| 696 | 000002B7 | ||
| 697 | 000002B8 | ||
| 698 | 000002B9 | ||
| 699 | 000002BA | ||
| 700 | 000002BB | ||
| 701 | 000002BC | ||
| 702 | 000002BD | ||
| 703 | 000002BE | ||
| 704 | 000002BF | ||
| 705 | 000002C0 | ||
| 706 | 000002C1 | ||
| 707 | 000002C2 | ||
| 708 | 000002C3 | ||
| 709 | 000002C4 | ||
| 710 | 000002C5 | ||
| 711 | 000002C6 | ||
| 712 | 000002C7 | ||
| 713 | 000002C8 | ||
| 714 | 000002C9 | ||
| 715 | 000002CA | ||
| 716 | 000002CB | ||
| 717 | 000002CC | ||
| 718 | 000002CD | ||
| 719 | 000002CE | ||
| 720 | 000002CF | ||
| 721 | 000002D0 | ||
| 722 | 000002D1 | ||
| 723 | 000002D2 | ||
| 724 | 000002D3 | ||
| 725 | 000002D4 | ||
| 726 | 000002D5 | ||
| 727 | 000002D6 | ||
| 728 | 000002D7 | ||
| 729 | 000002D8 | ||
| 730 | 000002D9 | ||
| 731 | 000002DA | ||
| 732 | 000002DB | ||
| 733 | 000002DC | ||
| 734 | 000002DD | ||
| 735 | 000002DE | ||
| 736 | 000002DF | ||
| 737 | 000002E0 | ||
| 738 | 000002E1 | ||
| 739 | 000002E2 | ||
| 740 | 000002E3 | ||
| 741 | 000002E4 | ||
| 742 | 000002E5 | ||
| 743 | 000002E6 | ||
| 744 | 000002E7 | ||
| 745 | 000002E8 | ||
| 746 | 000002E9 | ||
| 747 | 000002EA | ||
| 748 | 000002EB | ||
| 749 | 000002EC | ||
| 750 | 000002ED | ||
| 751 | 000002EE | ||
| 752 | 000002EF | ||
| 753 | 000002F0 | ||
| 754 | 000002F1 | ||
| 755 | 000002F2 | ||
| 756 | 000002F3 | ||
| 757 | 000002F4 | ||
| 758 | 000002F5 | ||
| 759 | 000002F6 | ||
| 760 | 000002F7 | ||
| 761 | 000002F8 | ||
| 762 | 000002F9 | ||
| 763 | 000002FA | ||
| 764 | 000002FB | ||
| 765 | 000002FC | ||
| 766 | 000002FD | ||
| 767 | 000002FE | ||
| 768 | 000002FF | ||
| 769 | 00000300 | ||
| 770 | 00000301 | ||
| 771 | 00000302 | ||
| 772 | 00000303 | ||
| 773 | 00000304 | ||
| 774 | 00000305 | ||
| 775 | 00000306 | ||
| 776 | 00000307 | ||
| 777 | 00000308 | ||
| 778 | 00000309 | ||
| 779 | 0000030A | ||
| 780 | 0000030B | ||
| 781 | 0000030C | ||
| 782 | 0000030D | ||
| 783 | 0000030E | ||
| 784 | 0000030F | ||
| 785 | 00000310 | ||
| 786 | 00000311 | ||
| 787 | 00000312 | ||
| 788 | 00000313 | ||
| 789 | 00000314 | ||
| 790 | 00000315 | ||
| 791 | 00000316 | ||
| 792 | 00000317 | ||
| 793 | 00000318 | ||
| 794 | 00000319 | ||
| 795 | 0000031A | ||
| 796 | 0000031B | ||
| 797 | 0000031C | ||
| 798 | 0000031D | ||
| 799 | 0000031E | ||
| 800 | 0000031F | ||
| 801 | 00000320 | ||
| 802 | 00000321 | ||
| 803 | 00000322 | ||
| 804 | 00000323 | ||
| 805 | 00000324 | ||
| 806 | 00000325 | ||
| 807 | 00000326 | ||
| 808 | 00000327 | ||
| 809 | 00000328 | ||
| 810 | 00000329 | ||
| 811 | 0000032A | ||
| 812 | 0000032B | ||
| 813 | 0000032C | ||
| 814 | 0000032D | ||
| 815 | 0000032E | ||
| 816 | 0000032F | ||
| 817 | 00000330 | ||
| 818 | 00000331 | ||
| 819 | 00000332 | ||
| 820 | 00000333 | ||
| 821 | 00000334 | ||
| 822 | 00000335 | ||
| 823 | 00000336 | ||
| 824 | 00000337 | ||
| 825 | 00000338 | ||
| 826 | 00000339 | ||
| 827 | 0000033A | ||
| 828 | 0000033B | ||
| 829 | 0000033C | ||
| 830 | 0000033D | ||
| 831 | 0000033E | ||
| 832 | 0000033F | ||
| 833 | 00000340 | ||
| 834 | 00000341 | ||
| 835 | 00000342 | ||
| 836 | 00000343 | ||
| 837 | 00000344 | ||
| 838 | 00000345 | ||
| 839 | 00000346 | ||
| 840 | 00000347 | ||
| 841 | 00000348 | ||
| 842 | 00000349 | ||
| 843 | 0000034A | ||
| 844 | 0000034B | ||
| 845 | 0000034C | ||
| 846 | 0000034D | ||
| 847 | 0000034E | ||
| 848 | 0000034F | ||
| 849 | 00000350 | ||
| 850 | 00000351 | ||
| 851 | 00000352 | ||
| 852 | 00000353 | ||
| 853 | 00000354 | ||
| 854 | 00000355 | ||
| 855 | 00000356 | ||
| 856 | 00000357 | ||
| 857 | 00000358 | ||
| 858 | 00000359 | ||
| 859 | 0000035A | ||
| 860 | 0000035B | ||
| 861 | 0000035C | ||
| 862 | 0000035D | ||
| 863 | 0000035E | ||
| 864 | 0000035F | ||
| 865 | 00000360 | ||
| 866 | 00000361 | ||
| 867 | 00000362 | ||
| 868 | 00000363 | ||
| 869 | 00000364 | ||
| 870 | 00000365 | ||
| 871 | 00000366 | ||
| 872 | 00000367 | ||
| 873 | 00000368 | ||
| 874 | 00000369 | ||
| 875 | 0000036A | ||
| 876 | 0000036B | ||
| 877 | 0000036C | ||
| 878 | 0000036D | ||
| 879 | 0000036E | ||
| 880 | 0000036F | ||
| 881 | 00000370 | ||
| 882 | 00000371 | ||
| 883 | 00000372 | ||
| 884 | 00000373 | ||
| 885 | 00000374 | ||
| 886 | 00000375 | ||
| 887 | 00000376 | ||
| 888 | 00000377 | ||
| 889 | 00000378 | ||
| 890 | 00000379 | ||
| 891 | 0000037A | ||
| 892 | 0000037B | ||
| 893 | 0000037C | ||
| 894 | 0000037D | ||
| 895 | 0000037E | ||
| 896 | 0000037F | ||
| 897 | 00000380 | ||
| 898 | 00000381 | ||
| 899 | 00000382 | ||
| 900 | 00000383 | ||
| 901 | 00000384 | ||
| 902 | 00000385 | ||
| 903 | 00000386 | ||
| 904 | 00000387 | ||
| 905 | 00000388 | ||
| 906 | 00000389 | ||
| 907 | 0000038A | ||
| 908 | 0000038B | ||
| 909 | 0000038C | ||
| 910 | 0000038D | ||
| 911 | 0000038E | ||
| 912 | 0000038F | ||
| 913 | 00000390 | ||
| 914 | 00000391 | ||
| 915 | 00000392 | ||
| 916 | 00000393 | ||
| 917 | 00000394 | ||
| 918 | 00000395 | ||
| 919 | 00000396 | ||
| 920 | 00000397 | ||
| 921 | 00000398 | ||
| 922 | 00000399 | ||
| 923 | 0000039A | ||
| 924 | 0000039B | ||
| 925 | 0000039C | ||
| 926 | 0000039D | ||
| 927 | 0000039E | ||
| 928 | 0000039F | ||
| 929 | 000003A0 | ||
| 930 | 000003A1 | ||
| 931 | 000003A2 | ||
| 932 | 000003A3 | ||
| 933 | 000003A4 | ||
| 934 | 000003A5 | ||
| 935 | 000003A6 | ||
| 936 | 000003A7 | ||
| 937 | 000003A8 | ||
| 938 | 000003A9 | ||
| 939 | 000003AA | ||
| 940 | 000003AB | ||
| 941 | 000003AC | ||
| 942 | 000003AD | ||
| 943 | 000003AE | ||
| 944 | 000003AF | ||
| 945 | 000003B0 | ||
| 946 | 000003B1 | ||
| 947 | 000003B2 | ||
| 948 | 000003B3 | ||
| 949 | 000003B4 | ||
| 950 | 000003B5 | ||
| 951 | 000003B6 | ||
| 952 | 000003B7 | ||
| 953 | 000003B8 | ||
| 954 | 000003B9 | ||
| 955 | 000003BA | ||
| 956 | 000003BB | ||
| 957 | 000003BC | ||
| 958 | 000003BD | ||
| 959 | 000003BE | ||
| 960 | 000003BF | ||
| 961 | 000003C0 | ||
| 962 | 000003C1 | ||
| 963 | 000003C2 | ||
| 964 | 000003C3 | ||
| 965 | 000003C4 | ||
| 966 | 000003C5 | ||
| 967 | 000003C6 | ||
| 968 | 000003C7 | ||
| 969 | 000003C8 | ||
| 970 | 000003C9 | ||
| 971 | 000003CA | ||
| 972 | 000003CB | ||
| 973 | 000003CC | ||
| 974 | 000003CD | ||
| 975 | 000003CE | ||
| 976 | 000003CF | ||
| 977 | 000003D0 | ||
| 978 | 000003D1 | ||
| 979 | 000003D2 | ||
| 980 | 000003D3 | ||
| 981 | 000003D4 | ||
| 982 | 000003D5 | ||
| 983 | 000003D6 | ||
| 984 | 000003D7 | ||
| 985 | 000003D8 | ||
| 986 | 000003D9 | ||
| 987 | 000003DA | ||
| 988 | 000003DB | ||
| 989 | 000003DC | ||
| 990 | 000003DD | ||
| 991 | 000003DE | ||
| 992 | 000003DF | ||
| 993 | 000003E0 | ||
| 994 | 000003E1 | ||
| 995 | 000003E2 | ||
| 996 | 000003E3 | ||
| 997 | 000003E4 | ||
| 998 | 000003E5 | ||
| 999 | 000003E6 | ||
| 1000 | 000003E7 | ||
| 1001 | 000003E8 | ||
| 1002 | 000003E9 | ||
| 1003 | 000003EA | ||
| 1004 | 000003EB | ||
| 1005 | 000003EC | ||
| 1006 | 000003ED | ||
| 1007 | 000003EE | ||
| 1008 | 000003EF | ||
| 1009 | 000003F0 | ||
| 1010 | 000003F1 | ||
| 1011 | 000003F2 | ||
| 1012 | 000003F3 | ||
| 1013 | 000003F4 | ||
| 1014 | 000003F5 | ||
| 1015 | 000003F6 | ||
| 1016 | 000003F7 | ||
| 1017 | 000003F8 | ||
| 1018 | 000003F9 | ||
| 1019 | 000003FA | ||
| 1020 | 000003FB | ||
| 1021 | 000003FC | ||
| 1022 | 000003FD | ||
| 1023 | 000003FE | ||
| 1024 | 000003FF \ No newline at end of file | ||
diff --git a/riscvtest_rom_image.txt b/riscvtest_rom_image.txt new file mode 100644 index 0000000..43e784b --- /dev/null +++ b/riscvtest_rom_image.txt | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | 00500113 | ||
| 2 | 00C00193 | ||
| 3 | FF718393 | ||
| 4 | 0023E233 | ||
| 5 | 0041F2B3 | ||
| 6 | 004282B3 | ||
| 7 | 02728863 | ||
| 8 | 0041A233 | ||
| 9 | 00020463 | ||
| 10 | 00000293 | ||
| 11 | 0023A233 | ||
| 12 | 005203B3 | ||
| 13 | 402383B3 | ||
| 14 | 0471AA23 | ||
| 15 | 06002103 | ||
| 16 | 005104B3 | ||
| 17 | 008001EF | ||
| 18 | 00100113 | ||
| 19 | 00910133 | ||
| 20 | 0221A023 | ||
| 21 | 00210063 \ No newline at end of file | ||
