Your Very First Microprocessor
gibiansky.com
gibiansky.com
1 nit pick, I think wherever you use a wire assignment you need the assign keyword. e.g
wire [1:0] command = mem_out[7:6];
wire [2:0] destination_addr = mem_out[6:3];
wire [2:0] source_addr = mem_out[2:0];
should be assign wire [1:0] command = mem_out[7:6];
assign wire [2:0] destination_addr = mem_out[6:3];
assign wire [2:0] source_addr = mem_out[2:0];
Or maybe it's wire assign. I usually first declare the wire in a single statement then use assign on a new line.[0] http://www.verilogtutorial.info/chapter_2.htm [1] http://www.doulos.com/knowhow/verilog_designers_guide/wire_a...
In looking it up, I did come across the keyword "alias", which I was not familiar with, that effectively does what you've done here.
That said, it doesn't detract from an enjoyable tutorial. It's nice to see a little ASIC content on HN - duly upvoted!
It appears to be valid, and does not require "assign".
This is what I like about HN - smart people keeping me on my toes!
When writing these blog posts, I usually create a single circuit with a bunch of disparate parts - I don't need the circuit to be functional for any simulation purposes, I just need the diagrams and rendering. Part of the reason that I only use a single circuit is that I need to copy and paste different parts, and I'm not sure if copying/pasting between different circuits is possible. Also, copy/paste rather often dies on me, especially when selecting multiple components, which makes workflow a bit more complicated. (This happens to me rather often and is really annoying, because the only way to fix it is to close the tab and restart. Symptoms after breakage include inability to copy/paste or move any circuit elements around. If there's any way to submit debug logs for when this happens, feel free to let me know and I'll be sure to try next time it happens. You have my email.)
Exporting via the export tool produces a single PNG file for the entire circuit, where I often need just a bit of the entire diagram. Screenshots let me select a small portion of the circuit.
I'm not entirely sure how this could be fixed. If there were gist-like embeddable widgets, I think the convenience of those would outweigh the disadvantages of a slightly different workflow. Circuit "gists" would be awesome. Another thing that would be great is if I could select a bunch of elements on a circuit, click on some button, and have a new circuit created with only those elements in it. (Note that I'm just brainstorming what would help me specifically, so I don't know how all this might fit into your product.)
Anyway, CircuitLab is awesome! Thanks for making it.
Maybe have a tool that allows you to select just a part of the schematic like some print screen tools have when you just want to save a part of the screen, and export just that. I never experienced the crashes that the other poster talks about though.
Thanks for a great product by the way!
They were not very complicated machines and thus made it easier to create assembly language programs that actually did stuff you could observe quickly. I think the fast feedback loop between coding in assembly and having observable results (i.e. graphics etc.) made for a nice learning platform.
http://en.wikipedia.org/wiki/TRS-80_Color_Computer http://en.wikipedia.org/wiki/TRS-80#The_Model_I
I think today's processors are very cool but trying to teach someone assembly on a monster like the modern processors and having to do all sorts of things to try and flip a single bit on the screen via GPU's etc. makes for a rough learning experience. I notice very few college programs are doing low level courses and I think it impacts the students in very subtle but real ways that creep into code because of their lack of the low-level details of how computers work.
'm' was 'indirect thru h:l' so it did a 16-bit address fetch or store.