2 questions: Is that linker file stuff working the same way if using clang instead of gcc? Also, will you show how it is done with Rust and Zig in future videos? Bonus question :) in riscv assembler with gcc is it mov <target>, <source> or mov <source>, <target>? Since GCC for x86 keeps insisting to use that AT&T notation or however it is called... Bonus remark: It has been a few decades since I did UART16550 programming. But the way your uart_putchar() function is written, you do not really use the FIFO. There is a way to check if the FIFO can still hold one more character. You, in turn check if the FIFO is empty.
Since the GNU linker is used by both, the syntax should port no problem. What the compilers emit may differ, however, plus the platform matters too, and so I suspect that's why a generalized linker script is so freakin' complicated. Running `riscv64-unknown-elf-ld --verbose` is educational. Re other languages, I am working on Python right now. Thinking about Go. I actually ported a version of Java to run bare metal on rPi years ago. I thought about revisiting that project for Risc-V. I've never used Rust or Zig. But sure, why not? Funny enough, there is no mov instruction for Risc-V. There is a mv psuedo instruction, `mv rd, rs`, which translates to `addi rd, rs, 0`, with the destination register being first. I find the green sheets helpful, for example: www.cs.sfu.ca/~ashriram/Courses/CS295/assets/notebooks/RISCV/RISCV_GREEN_CARD.pdf The FIFO is actually used, it's just never filled. THRE clears before the shift register finishes munching on its data. I wanted to show a technique that would prevent data from being dropped, not optimize throughput. But your point is valid. I was not clear in the video. Great questions. Thanks!
In load byte should the selected byte reflect the default little Indian integer format (count bytes from the right)? Also, instead of all the shift mechanics, can one of 4 byte mixes be used instead?
I assumed that words are stored big endian in RAM. The spec says it can be done either way. It's easier to demo imho. Regarding use of mux for byte extraction...interesting. How would you propose? My hw implementation was based on me writing some pseudo code (which I did off camera), and shifting is what I envisioned.
Maybe 8 4-bit muxes with the 1st mux inputs on input b0,b8,b16,b24 outputting to b0, 2nd on b1,b9,b17,b25 outputting to b1 etc. The 2 bit selects are common to all 8 muxes. I think its the same or similar technique you used for the half word but not sure. The mux effectively performs the 0,8,16 or 24 bit byte shift depending on the select.
RISC-V is an open source instruction set architecture developed by UC Berkley. RISC means reduced instruction set computer...meaning that the CPU contains a small number of simple instructions. It is an ideal platform for learning more about CPUs. My Logisim series demonstrates how to go about building a functional CPU that can be synthesized on to an FPGA.
I’ve got the same problem with my DBX. I don’t have the equipment to do this, but I will find someone who can thank you for this video. I’m sure this will solve the problem with mine DBX to
Sorry to hear. You can get a new hot air rework station for under $80 from Ali Express. Get flux as well. Probably can get a used one for less on eBay. You could also try a local college...they have labs they might let you use, or fix it days.
Interesting but I dont understand whats going on. Very specific usage. This is for programming basically an OS or interface that you can communicate with? Definately interesting, just a little too high level i think for most viewers. Like for example, what are we doinfgwirh thw bit values ect. And how are we using this?
I am building modules step by step, that will be combined into a design, which will implement a RISC-V system on a chip, in Logisim. The immediate generator acts upon RISC-V immediate instruction types, which contain hard-coded values within the instruction. Those immediate values are then needed by other modules (such as the ALU). Perhaps I did not add enough context at the beginning of the video. Have you have seen other videos in the series? I am about to deploy content on control logic, which pulls these modules together. Thanks for the question.
This is really good content. Keep it up dude. Honestly kinda crazy that you only have 200 subs. The quality of your videos is just so much better than mine. The youtube algorithm be just hatin sometimes.
Thanks for the kind words. My last series on the Hack CPU was a limited niche. I am not surprised at the limited uptake to date. RISC-V has broader appeal. So I expect the channel will grow. Or not. I do this because it helps reinforce my learning, with the hope that others will benefit. I do have bigger plans for this series...from building a compiler, to application of machine learning to Logisim. Cheers.
@chuckbenedict7235 I'll definitely watch your risc-v series as you make it. I started learning about computers about a year ago, and I was surprised by that lack of detailed how-to videos. I, too, have made quite a few logic related and cpu building videos in the hopes of making it easier to learn for other people who get into computer building.
Hey dude! Your series doesn't seem to be getting the love it deserves but please note that it is a great series! People don't really find interest in this field of electronics and maybe because of that your videos haven't been doing super well but there are people that love this content. I am currently following the nand2tetris course in coursera and this has been a great resource in visualizing the circuits. Granted my implementation is definitely different from yours, but you have done a great job regardless! Hope you have a great day Chuck!
I didn't do it for clicks...I just had an interest. But I do appreciate the feedback and am glad you find it useful. Is there anything else you might find helpful if I were to start another series?
@chuckbenedict7235 That is such a difficult question haha. I personally would love to see a series on GPUs but that wouldn't really cater to a larger audience I think. You could try out hardware implementation of the hack architecture and maybe build a PCB surrounding it. The learning process itself is amazing. I too am working on the same thing and I plan to show it at our college exhibition in like a year. I have barely barely started with it (the parts aren't really very easy to find where I live) but I do hope to at least get far enough.
really love your videos! I recreated this circuit, however logisim gives me an "oscillation apparent" error. it seems related to the 16 bit increment chip. In order to follow a long, I made my inc16 chip with the stock adder chip switched to 16 data bits and then a 0 value bus attached, which seemed to be working fine, however now when it's used in this circuit is having an issue. Either way, this helped me understand the program counter function much better, completely missed the OR gate implementation on my own
I know it's out of context, but am I the only one who can't find the Reference of any of the libraries below the input/output library in the help section???
Not legally as far as a know. I do see it available used on Amazon for $28. It is a good value for what is learned IMHO (I have nothing to do with the book btw).
I am very glad I found this channel,it has been a good journey watching and experimenting the hackcomputer myself My respects , for posting this great informational videos🙏🙏🙏
I don't think you need the second and-gate. It is already in the half-adder. Just connect the half-adders carry output directly to the lower input of the or-gate.
Great videos thank you Chuck. Managed to make a couple of my own CPU designs thanks to you and the book. Still trying to understand input and output, but getting there. These VGA videos certainly help understanding output. Will you touch on input such as keyboards in the future? Thanks again
I am glad you are finding them useful. I have one more video to go for VGA to show the driver working under HackCPU control. Then yes...a keyboard driver will be next. I intend to start with PS2 since it is simple. I have sights set on a USB HID host, but it will take some time...how about HDMI?
@@chuckbenedict7235 Awesome! I can't wait to see how you do it. I couldn't help myself and started learning about data and address bussing, but I really can't wait to see how it's done with the HackCPU
Cross reference page 37 with page 67. I struggled with this too until I made the connection. There is an important one-liner in the last sentence of the Figure 4.3 caption: "Note the similarity between this instruction set and the ALU specification given in figure 2.6". I wrote, in my copy of the book, the bit descriptions over the c(x) columns on page 67. I have the earlier edition, by the way...
I intend to...I have been away for a time, but am working on more content right now. My goal is to assemble a complete working computer with a display and keyboard, with an assembler monitor application. What would you like to see?
@@chuckbenedict7235 I would like a tutorial on just like what you said you are working on, in Logisim of course. If you can't though, its fine! :D just continue this series if you can. No pressure man!
@@KapPetrov Yeah I'd like to see that too. Yah know, if this could be created in logism, this can be created in real life. That would be soo cool don't you think Kap Petrov?
Hi Chuck. It would be extremely helpful if you could tell me which fans you ordered....my replacement fans didn't have enough cable to reach the connector on my GPU. Can't find an extension cable because the 4pins are in a smaller connector format...thanks!
I bought those fans long ago and the exact item is not there anymore. But, it looks like this one might work: www.aliexpress.us/item/3256803946424864.html?spm=a2g0o.productlist.0.0.e853756fB4bxC5&algo_pvid=5a22d116-2c68-4417-bee6-aacd13c3f390&algo_exp_id=5a22d116-2c68-4417-bee6-aacd13c3f390-3&pdp_ext_f=%7B%22sku_id%22%3A%2212000028141647971%22%7D&pdp_npi=2%40dis%21USD%218.5%217.99%21%21%21%21%21%402103255b16690102875217131e27bd%2112000028141647971%21sea&curPageLogUid=aHWjECam9VfW
I also did buy another set that did not work. The dimensions matched but the leads were not long enough. You can cut the old leads off and splice on to a new set. Messy, but it worked.