diff --git a/doc/assets/block_memory_architecture.png b/doc/assets/block_memory_architecture.png deleted file mode 100644 index 26298c7..0000000 Binary files a/doc/assets/block_memory_architecture.png and /dev/null differ diff --git a/doc/assets/bus_architecture.drawio.svg b/doc/assets/bus_architecture.drawio.svg new file mode 100644 index 0000000..e4858e0 --- /dev/null +++ b/doc/assets/bus_architecture.drawio.svg @@ -0,0 +1,445 @@ + + + + + + + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + +
+
+
+

+ manta +

+
+
+
+
+ + manta + +
+
+ + + + +
+
+
+

+ FPGA Fabric +

+
+
+
+
+ + FPGA Fabric + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + + +
+
+
+ rx +
+
+
+
+ + rx + +
+
+ + + + + +
+
+
+ input_0 +
+
+
+
+ + input_0 + +
+
+ + + + + +
+
+
+ output_1 +
+
+
+
+ + output_1 + +
+
+ + + + +
+
+
+ rx bridge +
+
+
+
+ + rx bridge + +
+
+ + + + +
+
+
+ logic +
+ analyzer core +
+
+
+
+ + logic... + +
+
+ + + + +
+
+
+ io core +
+
+
+
+ + io core + +
+
+ + + + +
+
+
+ block memory core +
+
+
+
+ + block memo... + +
+
+ + + + +
+
+
+ tx bridge +
+
+
+
+ + tx bridge + +
+
+ + + + +
+
+
+ user logic +
+
+
+
+ + user logic + +
+
+ + + + + +
+
+
+ addr +
+
+
+
+ + addr + +
+
+ + + + + +
+
+
+ din +
+
+
+
+ + din + +
+
+ + + + + +
+
+
+ dout +
+
+
+
+ + dout + +
+
+ + + + + +
+
+
+ we +
+
+
+
+ + we + +
+
+ + + + + +
+
+
+ tx +
+
+
+
+ + tx + +
+
+ + + + + +
+
+
+ probe_2 +
+
+
+
+ + probe_2 + +
+
+ + + + + +
+
+
+ probe_3 +
+
+
+
+ + probe_3 + +
+
+ + + + + +
+
+
+ probe_1 +
+
+
+
+ + probe_1 + +
+
+ + + + + +
+
+
+ output_0 +
+
+
+
+ + output_0 + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/doc/assets/bus_architecture.png b/doc/assets/bus_architecture.png deleted file mode 100644 index 4badb26..0000000 Binary files a/doc/assets/bus_architecture.png and /dev/null differ diff --git a/doc/assets/ethernet_packet.png b/doc/assets/ethernet_packet.png deleted file mode 100644 index cd39e12..0000000 Binary files a/doc/assets/ethernet_packet.png and /dev/null differ diff --git a/doc/assets/io_core_architecture.drawio.svg b/doc/assets/io_core_architecture.drawio.svg new file mode 100644 index 0000000..d5b5064 --- /dev/null +++ b/doc/assets/io_core_architecture.drawio.svg @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ output_0 +
+
+
+
+ + output_0 + +
+
+ + + + + + +
+
+
+ output_n +
+
+
+
+ + output_n + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + +
+
+
+ input_n +
+
+
+
+ + input_n + +
+
+ + + + + + +
+
+
+ strobe +
+
+
+
+ + strobe + +
+
+ + + + +
+
+
+

+ IO Core +

+
+
+
+
+ + IO Core + +
+
+ + + + + + +
+
+
+ input_0 +
+
+
+
+ + input_0 + +
+
+ + + + +
+
+
+ + ... + +
+
+
+
+ + ... + +
+
+ + + + +
+
+
+ input_0 buffer +
+
+
+
+ + input_0 buffer + +
+
+ + + + +
+
+
+ input_n buffer +
+
+
+
+ + input_n buffer + +
+
+ + + + +
+
+
+ output_n buffer +
+
+
+
+ + output_n buffer + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + + +
+
+
+ output_0 +
+
+
+
+ + output_0 + +
+
+ + + + +
+
+
+ output_0 buffer +
+
+
+
+ + output_0 buffer + +
+
+ + + + + +
+
+
+ input_0 +
+
+
+
+ + input_0 + +
+
+ + + + + +
+
+
+ output_n +
+
+
+
+ + output_n + +
+
+ + + + + +
+
+
+ input_n +
+
+
+
+ + input_n + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/doc/assets/io_core_architecture.png b/doc/assets/io_core_architecture.png deleted file mode 100644 index bc446f5..0000000 Binary files a/doc/assets/io_core_architecture.png and /dev/null differ diff --git a/doc/assets/io_core_memory_map.drawio.svg b/doc/assets/io_core_memory_map.drawio.svg new file mode 100644 index 0000000..35576a4 --- /dev/null +++ b/doc/assets/io_core_memory_map.drawio.svg @@ -0,0 +1,251 @@ + + + + + + + +
+
+
+ foo[4:0] +
+
+
+
+ + foo[4:0] + +
+
+ + + + +
+
+
+ bar[15:0] +
+
+
+
+ + bar[15:0] + +
+
+ + + + +
+
+
+ baz[31:16] +
+
+
+
+ + baz[31:16] + +
+
+ + + + +
+
+
+ baz[15:0] +
+
+
+
+ + baz[15:0] + +
+
+ + + + +
+
+
+ zero pad +
+
+
+
+ + zero pad + +
+
+ + + + +
+
+
+ baz[36:32] +
+
+
+
+ + baz[36:32] + +
+
+ + + + +
+
+
+ zero pad +
+
+
+
+ + zero pad + +
+
+ + + + +
+
+
+ 0x0000 +
+
+
+
+ + 0x0000 + +
+
+ + + + +
+
+
+ 0x0001 +
+
+
+
+ + 0x0001 + +
+
+ + + + +
+
+
+ 0x0002 +
+
+
+
+ + 0x0002 + +
+
+ + + + +
+
+
+ 0x0003 +
+
+
+
+ + 0x0003 + +
+
+ + + + +
+
+
+ 0x0004 +
+
+
+
+ + 0x0004 + +
+
+ + + + +
+
+
+ 0 +
+
+
+
+ + 0 + +
+
+ + + + +
+
+
+ 16 +
+
+
+
+ + 16 + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/doc/assets/logic_analyzer_architecture.drawio.svg b/doc/assets/logic_analyzer_architecture.drawio.svg new file mode 100644 index 0000000..c2123ab --- /dev/null +++ b/doc/assets/logic_analyzer_architecture.drawio.svg @@ -0,0 +1,748 @@ + + + + + + + + +
+
+
+ block +
+ memory +
+
+
+
+ + block... + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + +
+
+
+ fsm +
+ registers +
+
+
+
+ + fsm... + +
+
+ + + + +
+
+
+ fsm +
+
+
+
+ + fsm + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + +
+
+
+ trigger registers +
+
+
+
+ + trigger re... + +
+
+ + + + +
+
+
+ trigger +
+
+
+
+ + trigger + +
+
+ + + + + +
+
+
+ arg +
+
+
+
+ + arg + +
+
+ + + + + +
+
+
+ op +
+
+
+
+ + op + +
+
+ + + + +
+
+
+ trigger +
+
+
+
+ + trigger + +
+
+ + + + + +
+
+
+ arg +
+
+
+
+ + arg + +
+
+ + + + + +
+
+
+ op +
+
+
+
+ + op + +
+
+ + + + + +
+
+
+ trigger_mode +
+
+
+
+ + trigger_mode + +
+
+ + + + + +
+
+
+ request_start +
+
+
+
+ + request_start + +
+
+ + + + + +
+
+
+ request_stop +
+
+
+
+ + request_stop + +
+
+ + + + + +
+
+
+ read_pointer +
+
+
+
+ + read_pointer + +
+
+ + + + + +
+
+
+ write_pointer +
+
+
+
+ + write_pointer + +
+
+ + + + + +
+
+
+ state +
+
+
+
+ + state + +
+
+ + + + + +
+
+
+ trigger_location +
+
+
+
+ + trigger_location + +
+
+ + + + +
+
+
+ ... +
+
+
+
+ + ... + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + +
+
+
+ port A +
+
+
+
+ + port A + +
+
+ + + + + +
+
+
+ data +
+
+
+
+ + data + +
+
+ + + + +
+
+
+ port B +
+
+
+
+ + port B + +
+
+ + + + +
+
+
+

+ + Trigger Block + +

+
+
+
+
+ + Trigger Block + +
+
+ + + + + +
+
+
+ trig +
+
+
+
+ + trig + +
+
+ + + + +
+
+
+ OR +
+
+
+
+ + OR + +
+
+ + + + + +
+
+
+
+
+
+
+ + +
+
+ + + + + +
+
+
+ probe_2 +
+
+
+
+ + probe_2 + +
+
+ + + + +
+
+
+
+
+
+
+ + +
+
+ + + + + +
+
+
+ probe_1 +
+
+
+
+ + probe_1 + +
+
+ + + + + +
+
+
+

+ Logic Analyzer +

+
+
+
+
+ + Logic Analyzer + +
+
+ + + + + +
+
+
+ probe_0 +
+
+
+
+ + probe_0 + +
+
+ + + + +
+
+
+ trigger +
+
+
+
+ + trigger + +
+
+ + + + + +
+
+
+ arg +
+
+
+
+ + arg + +
+
+ + + + + +
+
+
+ op +
+
+
+
+ + op + +
+
+ + + + + +
+
+
+ we +
+
+
+
+ + we + +
+
+ + + +
+
+
+ we +
+
+
+
+ + we + +
+
+ + + + + +
+
+
+ addr +
+
+
+
+ + addr + +
+
+ + + +
+
+
+ addr +
+
+
+
+ + addr + +
+
+ + + + + + +
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/doc/assets/logic_analyzer_architecture.png b/doc/assets/logic_analyzer_architecture.png deleted file mode 100644 index 6e9ea24..0000000 Binary files a/doc/assets/logic_analyzer_architecture.png and /dev/null differ diff --git a/doc/assets/manta.drawio.png b/doc/assets/manta.drawio.png new file mode 100644 index 0000000..7d0cfd6 Binary files /dev/null and b/doc/assets/manta.drawio.png differ diff --git a/doc/assets/manta_architecture.png b/doc/assets/manta_architecture.png deleted file mode 100644 index d388fe2..0000000 Binary files a/doc/assets/manta_architecture.png and /dev/null differ diff --git a/doc/assets/memory_architecture.drawio.svg b/doc/assets/memory_architecture.drawio.svg new file mode 100644 index 0000000..ca3a1c9 --- /dev/null +++ b/doc/assets/memory_architecture.drawio.svg @@ -0,0 +1,608 @@ + + + + + + + + +
+
+
+ block RAM +
+
+
+
+ + block RAM + +
+
+ + + + +
+
+
+ port A +
+
+
+
+ + port A + +
+
+ + + + + +
+
+
+ addr +
+
+
+
+ + addr + +
+
+ + + + + +
+
+
+ din +
+
+
+
+ + din + +
+
+ + + + + +
+
+
+ dout +
+
+
+
+ + dout + +
+
+ + + + + +
+
+
+ we +
+
+
+
+ + we + +
+
+ + + + +
+
+
+ port B +
+
+
+
+ + port B + +
+
+ + + + +
+
+
+ Bus Controller +
+
+
+
+ + Bus Controller + +
+
+ + + + +
+
+
+ block RAM +
+
+
+
+ + block RAM + +
+
+ + + + +
+
+
+ port A +
+
+
+
+ + port A + +
+
+ + + + +
+
+
+ port B +
+
+
+
+ + port B + +
+
+ + + + + + + + +
+
+
+ user_addr +
+
+
+
+ + user_addr + +
+
+ + + + + +
+
+
+ user_din +
+
+
+
+ + user_din + +
+
+ + + + + +
+
+
+ user_dout +
+
+
+
+ + user_dout + +
+
+ + + + + +
+
+
+ user_we +
+
+
+
+ + user_we + +
+
+ + + + + +
+
+
+ addr +
+
+
+
+ + addr + +
+
+ + + + + +
+
+
+ din +
+
+
+
+ + din + +
+
+ + + + + +
+
+
+ dout +
+
+
+
+ + dout + +
+
+ + + + + +
+
+
+ we +
+
+
+
+ + we + +
+
+ + + + +
+
+
+ block RAM +
+
+
+
+ + block RAM + +
+
+ + + + +
+
+
+ port A +
+
+
+
+ + port A + +
+
+ + + + +
+
+
+ port B +
+
+
+
+ + port B + +
+
+ + + + + +
+
+
+ addr +
+
+
+
+ + addr + +
+
+ + + + + +
+
+
+ din +
+
+
+
+ + din + +
+
+ + + + + +
+
+
+ dout +
+
+
+
+ + dout + +
+
+ + + + + +
+
+
+ we +
+
+
+
+ + we + +
+
+ + + + +
+
+
+ + + ... + + +
+
+
+
+ + ... + +
+
+ + + + + + +
+
+
+ 16 bits +
+
+
+
+ + 16 bits + +
+
+ + + + + + +
+
+
+ 16 bits +
+
+
+
+ + 16 bits + +
+
+ + + + + + +
+
+
+ 10 bits +
+
+
+
+ + 10 bits + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + + +
+
+
+ bus +
+
+
+
+ + bus + +
+
+ + + + +
+
+
+

+ Memory Core +

+
+
+
+
+ + Memory Core + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/doc/assets/system_architecture.drawio.svg b/doc/assets/system_architecture.drawio.svg new file mode 100644 index 0000000..930a0c7 --- /dev/null +++ b/doc/assets/system_architecture.drawio.svg @@ -0,0 +1,342 @@ + + + + + + + + + +
+
+
+

+ Host Machine +

+
+
+
+
+ + Host Machine + +
+
+ + + + + + +
+
+
+ User Application +
+
+
+
+ + User Application + +
+
+ + + + + + +
+
+
+ Manta API +
+
+
+
+ + Manta API + +
+
+ + + + + + +
+
+
+ Interface API +
+
+
+
+ + Interface API + +
+
+ + + + + +
+
+
+ USB/Ethernet Cable +
+
+
+
+ + USB/Ethernet Cable + +
+
+ + + + +
+
+
+ OS Device Driver +
+
+
+
+ + OS Device Driver + +
+
+ + + + +
+
+
+ Interface Transceiver +
+
+ (USB UART +
+ Converter / Ethernet PHY) +
+
+
+
+ + Interface Trans... + +
+
+ + + + + + +
+
+
+ rxd +
+
+
+
+ + rxd + +
+
+ + + + +
+
+
+ bridge_rx +
+
+
+
+ + bridge_rx + +
+
+ + + + +
+
+
+ logic_analyzer +
+
+
+
+ + logic_analyzer + +
+
+ + + + +
+
+
+ io_core +
+
+
+
+ + io_core + +
+
+ + + + +
+
+
+ block_memory +
+
+
+
+ + block_memory + +
+
+ + + + +
+
+
+ bridge_tx +
+
+
+
+ + bridge_tx + +
+
+ + + + + + + + + + + + +
+
+
+ User Logic +
+
+
+
+ + User Logic + +
+
+ + + + + + + + + + + + +
+
+
+ txd +
+
+
+
+ + txd + +
+
+ + + + +
+
+
+

+ FPGA Development Board +

+
+
+
+
+ + FPGA Development Board + +
+
+ + + + +
+
+
+

+ + Manta RTL + +

+
+
+
+
+ + Manta RTL + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/doc/assets/uart.png b/doc/assets/uart.png deleted file mode 100644 index c7455d5..0000000 Binary files a/doc/assets/uart.png and /dev/null differ diff --git a/doc/assets/uart_packets.drawio.svg b/doc/assets/uart_packets.drawio.svg new file mode 100644 index 0000000..b6c1fa6 --- /dev/null +++ b/doc/assets/uart_packets.drawio.svg @@ -0,0 +1,1148 @@ + + + + + + + +
+
+
+ W +
+
+
+
+ + W + +
+
+ + + + +
+
+
+ 8 +
+
+
+
+ + 8 + +
+
+ + + + +
+
+
+ 9 +
+
+
+
+ + 9 + +
+
+ + + + +
+
+
+ A +
+
+
+
+ + A + +
+
+ + + + +
+
+
+ B +
+
+
+
+ + B + +
+
+ + + + +
+
+
+ CR +
+
+
+
+ + CR + +
+
+ + + + +
+
+
+ LF +
+
+
+
+ + LF + +
+
+ + + + + + +
+
+
+ Write Address +
+
+
+
+ + Write Address + +
+
+ + + + + + +
+
+
+ End Of Line +
+
+
+
+ + End Of Line + +
+
+ + + + + + +
+
+
+ Preamble +
+
+
+
+ + Preamble + +
+
+ + + + +
+
+
+ 0 +
+
+
+
+ + 0 + +
+
+ + + + +
+
+
+ 8 +
+
+
+
+ + 8 + +
+
+ + + + +
+
+
+ 16 +
+
+
+
+ + 16 + +
+
+ + + + +
+
+
+ 24 +
+
+
+
+ + 24 + +
+
+ + + + +
+
+
+ 32 +
+
+
+
+ + 32 + +
+
+ + + + +
+
+
+ 48 +
+
+
+
+ + 48 + +
+
+ + + + +
+
+
+ 56 +
+
+
+
+ + 56 + +
+
+ + + + +
+
+
+ C +
+
+
+
+ + C + +
+
+ + + + +
+
+
+ D +
+
+
+
+ + D + +
+
+ + + + +
+
+
+ E +
+
+
+
+ + E + +
+
+ + + + +
+
+
+ F +
+
+
+
+ + F + +
+
+ + + + + + +
+
+
+ Write Data +
+
+
+
+ + Write Data + +
+
+ + + + +
+
+
+ 64 +
+
+
+
+ + 64 + +
+
+ + + + +
+
+
+ 72 +
+
+
+
+ + 72 + +
+
+ + + + +
+
+
+ 80 +
+
+
+
+ + 80 + +
+
+ + + + +
+
+
+ 88 +
+
+
+
+ + 88 + +
+
+ + + + +
+
+
+ R +
+
+
+
+ + R + +
+
+ + + + +
+
+
+ 0 +
+
+
+
+ + 0 + +
+
+ + + + +
+
+
+ 1 +
+
+
+
+ + 1 + +
+
+ + + + +
+
+
+ 2 +
+
+
+
+ + 2 + +
+
+ + + + +
+
+
+ 3 +
+
+
+
+ + 3 + +
+
+ + + + +
+
+
+ CR +
+
+
+
+ + CR + +
+
+ + + + +
+
+
+ LF +
+
+
+
+ + LF + +
+
+ + + + + + +
+
+
+ Read Address +
+
+
+
+ + Read Address + +
+
+ + + + + + +
+
+
+ End Of Line +
+
+
+
+ + End Of Line + +
+
+ + + + + + +
+
+
+ Preamble +
+
+
+
+ + Preamble + +
+
+ + + + +
+
+
+ 0 +
+
+
+
+ + 0 + +
+
+ + + + +
+
+
+ 8 +
+
+
+
+ + 8 + +
+
+ + + + +
+
+
+ 16 +
+
+
+
+ + 16 + +
+
+ + + + +
+
+
+ 24 +
+
+
+
+ + 24 + +
+
+ + + + +
+
+
+ 32 +
+
+
+
+ + 32 + +
+
+ + + + +
+
+
+ 48 +
+
+
+
+ + 48 + +
+
+ + + + +
+
+
+ 56 +
+
+
+
+ + 56 + +
+
+ + + + +
+
+
+

+ Read Request +

+
+
+
+
+ + Read Request + +
+
+ + + + +
+
+
+

+ Read Response +

+
+
+
+
+ + Read Response + +
+
+ + + + +
+
+
+

+ Write Request +

+
+
+
+
+ + Write Request + +
+
+ + + + +
+
+
+ D +
+
+
+
+ + D + +
+
+ + + + +
+
+
+ 4 +
+
+
+
+ + 4 + +
+
+ + + + +
+
+
+ 5 +
+
+
+
+ + 5 + +
+
+ + + + +
+
+
+ 6 +
+
+
+
+ + 6 + +
+
+ + + + +
+
+
+ 7 +
+
+
+
+ + 7 + +
+
+ + + + +
+
+
+ CR +
+
+
+
+ + CR + +
+
+ + + + +
+
+
+ LF +
+
+
+
+ + LF + +
+
+ + + + + + +
+
+
+ Read Data +
+
+
+
+ + Read Data + +
+
+ + + + + + +
+
+
+ End Of Line +
+
+
+
+ + End Of Line + +
+
+ + + + + + +
+
+
+ Preamble +
+
+
+
+ + Preamble + +
+
+ + + + +
+
+
+ 0 +
+
+
+
+ + 0 + +
+
+ + + + +
+
+
+ 8 +
+
+
+
+ + 8 + +
+
+ + + + +
+
+
+ 16 +
+
+
+
+ + 16 + +
+
+ + + + +
+
+
+ 24 +
+
+
+
+ + 24 + +
+
+ + + + +
+
+
+ 32 +
+
+
+
+ + 32 + +
+
+ + + + +
+
+
+ 48 +
+
+
+
+ + 48 + +
+
+ + + + +
+
+
+ 56 +
+
+
+
+ + 56 + +
+
+ + + + +
+
+
+

+ Write Response +

+
+
+
+
+ + Write Response + +
+
+ + + + +
+
+
+ + No Response + +
+
+
+
+ + No Response + +
+
+
+ + + + + Text is not SVG - cannot display + + + +
\ No newline at end of file diff --git a/doc/how_it_works.md b/doc/how_it_works.md index 6acdf30..0311b89 100644 --- a/doc/how_it_works.md +++ b/doc/how_it_works.md @@ -2,7 +2,7 @@ The whole system looks like the following: -![](assets/manta_architecture.png){:style="width:80%"} +![](assets/architecture.drawio.svg){:style="width:80%"} Manta is operated via its Python API, which communicates with the connected FPGA over an interface API like `pySerial` or `Scapy`. These abstract away the OS device drivers, which function differently depending on the host machine's platform. The OS device drivers ultimately send out bytes to the FPGA, across either a USB or Ethernet cable. @@ -12,7 +12,7 @@ Once sent across the wire, bytes are picked up by an interface transciever on th The logic Manta places on the FPGA consists of a series of cores connected in a chain along a common bus. Each core provides a unique method for interacting with the user’s logic, which it connects to by routing signals (called _probes_) between the user’s logic and the cores that interface with it. -![](assets/bus_architecture.png){:style="width:40%"} +![](assets/bus_architecture.drawio.svg){:style="width:40%"} These probes are presented as addressable memory, and are be controlled by reading and writing to their corresponing memory - not unlike registers on a microcontroller. Each core is allotted a section of address space at compile time, and operations addressed to a core’s address space control the behavior of the core. These cores are then daisy-chained along an internal bus, which permits a chain arbitrarily many cores to be placed on the bus. @@ -37,7 +37,7 @@ Each core has a bus input and output port, so that cores can be daisy-chained to Ethernet and UART both allow a stream of bytes to be sent between the host and FPGA, but since they're just interfaces, they don't define how these bytes are structured. As a result, Manta implements its own messaging format, with the following structure: -![](assets/uart.png){:style="width:85%"} +![](assets/uart_packets.drawio.svg){:style="width:85%"} Each of these messages is a string of ASCII characters consisting of a preamble, optional address and data fields, and an End of Line (EOL). The preamble denotes the type of operation, _R_ for a read and _W_ for a write. The address and data fields are encoded as hexadecimal digits, represented with the characters 0-9 and A-F in ASCII. As a result, four characters are needed to encode a 16-bit address or 16-bits of data. If the message specifies a write request, then it will contain a data field after the address field. Both request types will conclude with an End of Line, which consists of the two ASCII characters indicating a Carriage Return (CR) and a Line Feed (LF). diff --git a/doc/io_core.md b/doc/io_core.md index 16ff61e..ca777d1 100644 --- a/doc/io_core.md +++ b/doc/io_core.md @@ -90,7 +90,7 @@ While the IO core performs a very, very simple task, it carries a few caveats. This is done with the architecture shown below: -![](assets/io_core_architecture.png){:style="width:49%"} +![](assets/io_core_architecture.drawio.svg){:style="width:49%"} Each of the probes is mapped to a register of Manta's internal memory. Since Manta's internal registers are 16 bits wide, probes less than 16 bits are mapped to a single register, but probes wider than 16 bits require multiple. diff --git a/doc/logic_analyzer_core.md b/doc/logic_analyzer_core.md index edd9d50..8dcb3e8 100644 --- a/doc/logic_analyzer_core.md +++ b/doc/logic_analyzer_core.md @@ -139,7 +139,7 @@ At present, this class contains methods used really only for capturing data, and ## How It Works The Logic Analyzer Core's implementation on the FPGA consists of three primary components: -![](assets/logic_analyzer_architecture.png){style="width:85%"} +![](assets/logic_analyzer_architecture.drawio.svg){style="width:85%"} - The _Finite State Machine (FSM)_, which controls the operation of the core. The FSM's operation is driven by its associated registers, which are placed in a separate module. This permits simple CDC between the bus and user clock domains. - The _Trigger Block_, which generates the core's trigger condition. The trigger block contains a trigger for each input probe, and the registers necessary to configure them. It also contains the $N$-logic gate (either AND or OR) that generates the core's trigger from the individual probe triggers. CDC is performed in exactly the same manner as the FSM. If an external trigger is specified, the trigger block is omitted from the Logic Analyzer Core, and the external trigger is routed to the FSM's `trig` input. diff --git a/doc/block_memory_core.md b/doc/memory_core.md similarity index 99% rename from doc/block_memory_core.md rename to doc/memory_core.md index 1d8c464..2aa4749 100644 --- a/doc/block_memory_core.md +++ b/doc/memory_core.md @@ -68,7 +68,7 @@ A Block Memory core is used in the [video_sprite](https://github.com/fischermose Each Block Memory core is actually a set of 16-bit wide BRAMs with their ports concatenated together, with any spare bits masked off. Here's a diagram: -![](assets/block_memory_architecture.png) +![](assets/memory_architecture.drawio.svg) This has one major consequence: if the core doesn't have a width that's an exact multiple of 16, synthesis engines (Vivado in particular) will throw some warnings as they optimize out the unused bits. This is expected behavior, and while the warnings are a little annoying, not having to manually deal with the unused bits simplifies the implementation immensely. No Python is needed to generate the core, and it'll configure itself just based on Verilog parameters. This turns the block memory core from a complicated conditionally-instantiated beast to a simple ~_100 line_ [Verilog file](https://github.com/fischermoseley/manta/blob/main/src/manta/block_memory.v). diff --git a/mkdocs.yml b/mkdocs.yml index bc6c8f8..f027bdc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -61,7 +61,7 @@ nav: - Getting Started: getting_started.md - IO Core: io_core.md - Logic Analyzer Core: logic_analyzer_core.md - - Block Memory Core: block_memory_core.md + - Memory Core: memory_core.md - UART Interace: uart_interface.md - Ethernet Interface: ethernet_interface.md - For Developers: