diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/gui_handlers.wdf b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/gui_handlers.wdf new file mode 100644 index 0000000..d068f61 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/gui_handlers.wdf @@ -0,0 +1,41 @@ +version:1 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:6162737472616374636f6d62696e656470616e656c5f72656d6f76655f73656c65637465645f656c656d656e7473:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:61646473726377697a6172645f737065636966795f68646c5f6e65746c6973745f626c6f636b5f64657369676e:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:61646473726377697a6172645f737065636966795f6f725f6372656174655f636f6e73747261696e745f66696c6573:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:626173656469616c6f675f63616e63656c:35:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:626173656469616c6f675f6f6b:3132:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:636d646d73676469616c6f675f6f6b:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:636f6e73747261696e747363686f6f73657270616e656c5f6372656174655f66696c65:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:637265617465636f6e73747261696e747366696c6570616e656c5f66696c655f6e616d65:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:63726561746573726366696c656469616c6f675f66696c655f6e616d65:33:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:63726561746573726366696c656469616c6f675f66696c655f74797065:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:6670676163686f6f7365725f66616d696c79:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:6670676163686f6f7365725f667067615f7461626c65:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:6670676163686f6f7365725f7061636b616765:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:6670676163686f6f7365725f7370656564:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:66696c6573657470616e656c5f66696c655f7365745f70616e656c5f74726565:313132:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:666c6f776e6176696761746f727472656570616e656c5f666c6f775f6e6176696761746f725f74726565:3134:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:67657474696e6773746172746564766965775f6372656174655f6e65775f70726f6a656374:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:68617264776172657472656570616e656c5f68617264776172655f747265655f7461626c65:34:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:6d73677472656570616e656c5f6d6573736167655f766965775f74726565:3131:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:7061636f6d6d616e646e616d65735f6164645f736f7572636573:37:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:7061636f6d6d616e646e616d65735f6175746f5f636f6e6e6563745f746172676574:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:7061636f6d6d616e646e616d65735f6175746f5f7570646174655f68696572:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:7061636f6d6d616e646e616d65735f6f70656e5f68617264776172655f6d616e61676572:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:7061636f6d6d616e646e616d65735f70726f6772616d5f66706761:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:706176696577735f636f6465:38:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:706176696577735f70726f6a6563745f73756d6d617279:33:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:70726f6772616d64656275677461625f6f70656e5f746172676574:33:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:70726f6772616d667067616469616c6f675f70726f6772616d:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:70726f6a6563746e616d6563686f6f7365725f63686f6f73655f70726f6a6563745f6c6f636174696f6e:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:70726f6a6563746e616d6563686f6f7365725f70726f6a6563745f6e616d65:32:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:726469636f6d6d616e64735f64656c657465:35:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:72656d6f7665736f75726365736469616c6f675f616c736f5f64656c657465:31:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:73726363686f6f73657270616e656c5f6164645f68646c5f616e645f6e65746c6973745f66696c65735f746f5f796f75725f70726f6a656374:36:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:73726363686f6f73657270616e656c5f6164645f736f75726365735f66726f6d5f7375626469726563746f72696573:34:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:73726363686f6f73657270616e656c5f6372656174655f66696c65:34:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:73726363686f6f73657270616e656c5f6d616b655f6c6f63616c5f636f70795f6f665f74686573655f66696c65735f696e746f:37:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:73726363686f6f73657270616e656c5f7363616e5f616e645f6164645f72746c5f696e636c7564655f66696c65735f696e746f:33:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:73726363686f6f7365727461626c655f7372635f63686f6f7365725f7461626c65:3138:00:00 +70726f6a656374:76697661646f5f75736167655c6775695f68616e646c657273:7461736b62616e6e65725f636c6f7365:31:00:00 +eof:2033467665 diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/java_command_handlers.wdf b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/java_command_handlers.wdf new file mode 100644 index 0000000..5109266 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/java_command_handlers.wdf @@ -0,0 +1,10 @@ +version:1 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:616464736f7572636573:37:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6175746f636f6e6e656374746172676574:32:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6564697464656c657465:35:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6c61756e636870726f6772616d66706761:32:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6e657770726f6a656374:31:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:6f70656e68617264776172656d616e61676572:32:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:72756e62697467656e:33:00:00 +70726f6a656374:76697661646f5f75736167655c6a6176615f636f6d6d616e645f68616e646c657273:73686f7776696577:31:00:00 +eof:1722033132 diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/project.wpc b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/project.wpc new file mode 100644 index 0000000..c37c38d --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/project.wpc @@ -0,0 +1,4 @@ +version:1 +57656254616c6b5472616e736d697373696f6e417474656d70746564:2 +6d6f64655f636f756e7465727c4755494d6f6465:5 +eof: diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/synthesis.wdf b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/synthesis.wdf new file mode 100644 index 0000000..2060996 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/synthesis.wdf @@ -0,0 +1,39 @@ +version:1 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d70617274:786337613335746373673332342d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e616d65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d746f70:41727469785f536f435f746f70:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e636c7564655f64697273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67656e65726963:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d766572696c6f675f646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e737472736574:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7365755f70726f74656374:64656661756c743a3a6e6f6e65:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d666c617474656e5f686965726172636879:64656661756c743a3a72656275696c74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67617465645f636c6f636b5f636f6e76657273696f6e:64656661756c743a3a6f6666:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d646972656374697665:64656661756c743a3a64656661756c74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f6970:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f636f6e73747261696e7473:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f6c63:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d62756667:64656661756c743a3a3132:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66616e6f75745f6c696d6974:64656661756c743a3a3130303030:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73687265675f6d696e5f73697a65:64656661756c743a3a33:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d6f6465:64656661756c743a3a64656661756c74:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66736d5f65787472616374696f6e:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6b6565705f6571756976616c656e745f726567697374657273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7265736f757263655f73686172696e67:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636173636164655f647370:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e74726f6c5f7365745f6f70745f7468726573686f6c64:64656661756c743a3a6175746f:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f647370:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d726574696d696e67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f73726c65787472616374:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d617373657274:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f74696d696e675f64726976656e:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73666375:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00 +73796e746865736973:73796e7468657369735c7573616765:656c6170736564:30303a30313a303973:00:00 +73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f7065616b:3937382e3136304d42:00:00 +73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f6761696e:3635372e3231354d42:00:00 +eof:2284045389 diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/synthesis_details.wdf b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/synthesis_details.wdf new file mode 100644 index 0000000..227096f --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/synthesis_details.wdf @@ -0,0 +1,3 @@ +version:1 +73796e746865736973:73796e7468657369735c7573616765:686c735f6970:30:00:00 +eof:2511430288 diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/webtalk_pa.xml b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/webtalk_pa.xml new file mode 100644 index 0000000..7f7d0b2 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.cache/wt/webtalk_pa.xml @@ -0,0 +1,77 @@ + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.hw/RISC-V.lpr b/hardware/Vivado/E-ELEMENTS/RISC-V.hw/RISC-V.lpr new file mode 100644 index 0000000..c52c42d --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.hw/RISC-V.lpr @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.hw/hw_1/hw.xml b/hardware/Vivado/E-ELEMENTS/RISC-V.hw/hw_1/hw.xml new file mode 100644 index 0000000..d3dac31 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.hw/hw_1/hw.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/constrs_1/new/ARTIX7.xdc b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/constrs_1/new/ARTIX7.xdc new file mode 100644 index 0000000..ac273f6 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/constrs_1/new/ARTIX7.xdc @@ -0,0 +1,99 @@ + +## Clock signal + +##RGB LEDs +#set_property -dict { PACKAGE_PIN F6 IOSTANDARD LVCMOS33 } [get_ports { LEDG[0] }]; #IO_L19N_T3_VREF_35 Sch=led0_g +#set_property -dict { PACKAGE_PIN G6 IOSTANDARD LVCMOS33 } [get_ports { LEDR[0] }]; #IO_L19P_T3_35 Sch=led0_r +#set_property -dict { PACKAGE_PIN J4 IOSTANDARD LVCMOS33 } [get_ports { LEDG[1] }]; #IO_L21P_T3_DQS_35 Sch=led1_g +#set_property -dict { PACKAGE_PIN G3 IOSTANDARD LVCMOS33 } [get_ports { LEDR[1] }]; #IO_L20N_T3_35 Sch=led1_r +#set_property -dict { PACKAGE_PIN H4 IOSTANDARD LVCMOS33 } [get_ports { LEDB[2] }]; #IO_L21N_T3_DQS_35 Sch=led2_b +#set_property -dict { PACKAGE_PIN J2 IOSTANDARD LVCMOS33 } [get_ports { LEDG[2] }]; #IO_L22N_T3_35 Sch=led2_g +#set_property -dict { PACKAGE_PIN J3 IOSTANDARD LVCMOS33 } [get_ports { LEDR[2] }]; #IO_L22P_T3_35 Sch=led2_r +#set_property -dict { PACKAGE_PIN K2 IOSTANDARD LVCMOS33 } [get_ports { LEDB[3] }]; #IO_L23P_T3_35 Sch=led3_b +#set_property -dict { PACKAGE_PIN H6 IOSTANDARD LVCMOS33 } [get_ports { LEDG[3] }]; #IO_L24P_T3_35 Sch=led3_g +#set_property -dict { PACKAGE_PIN K1 IOSTANDARD LVCMOS33 } [get_ports { LEDR[3] }]; #IO_L23N_T3_35 Sch=led3_r + +##LEDs + +##USB-UART Interface + +##Quad SPI Flash +#set_property -dict { PACKAGE_PIN L13 IOSTANDARD LVCMOS33 } [get_ports { FLASH_CS }]; #IO_L6P_T0_FCS_B_14 Sch=qspi_cs +#set_property -dict { PACKAGE_PIN K17 IOSTANDARD LVCMOS33 } [get_ports { FLASH_DQ[0] }]; #IO_L1P_T0_D00_MOSI_14 Sch=qspi_dq[0] +#set_property -dict { PACKAGE_PIN K18 IOSTANDARD LVCMOS33 } [get_ports { FLASH_DQ[1] }]; #IO_L1N_T0_D01_DIN_14 Sch=qspi_dq[1] +#set_property -dict { PACKAGE_PIN L14 IOSTANDARD LVCMOS33 } [get_ports { FLASH_DQ[2] }]; #IO_L2P_T0_D02_14 Sch=qspi_dq[2] +#set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { FLASH_DQ[3] }]; #IO_L2N_T0_D03_14 Sch=qspi_dq[3] + +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_B[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_B[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_B[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_B[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_G[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_G[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_G[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_G[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_R[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_R[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_R[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {VGA_R[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports CLK_50] +set_property IOSTANDARD LVCMOS33 [get_ports UART_RXD] +set_property IOSTANDARD LVCMOS33 [get_ports UART_TXD] +set_property IOSTANDARD LVCMOS33 [get_ports VGA_HS] +set_property IOSTANDARD LVCMOS33 [get_ports VGA_VS] +set_property PACKAGE_PIN D8 [get_ports {VGA_G[3]}] +set_property PACKAGE_PIN A3 [get_ports {VGA_G[2]}] +set_property PACKAGE_PIN A4 [get_ports {VGA_G[1]}] +set_property PACKAGE_PIN B6 [get_ports {VGA_G[0]}] +set_property PACKAGE_PIN E7 [get_ports {VGA_B[3]}] +set_property PACKAGE_PIN A1 [get_ports {VGA_B[2]}] +set_property PACKAGE_PIN B1 [get_ports {VGA_B[1]}] +set_property PACKAGE_PIN C7 [get_ports {VGA_B[0]}] +set_property PACKAGE_PIN C5 [get_ports {VGA_R[2]}] +set_property PACKAGE_PIN C6 [get_ports {VGA_R[1]}] +set_property PACKAGE_PIN F5 [get_ports {VGA_R[0]}] +set_property PACKAGE_PIN P17 [get_ports CLK_50] +set_property PACKAGE_PIN B7 [get_ports {VGA_R[3]}] + + + +set_property PACKAGE_PIN N5 [get_ports UART_RXD] +set_property PACKAGE_PIN T4 [get_ports UART_TXD] +set_property PACKAGE_PIN D7 [get_ports VGA_HS] +set_property PACKAGE_PIN D5 [get_ports VGA_VS] + +set_property IOSTANDARD LVCMOS33 [get_ports {DIG[7]}] +set_property IOSTANDARD LVCMOS33 [get_ports {DIG[6]}] +set_property IOSTANDARD LVCMOS33 [get_ports {DIG[5]}] +set_property IOSTANDARD LVCMOS33 [get_ports {DIG[4]}] +set_property IOSTANDARD LVCMOS33 [get_ports {DIG[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {DIG[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {DIG[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {DIG[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SEL[7]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SEL[6]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SEL[5]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SEL[4]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SEL[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SEL[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SEL[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SEL[0]}] +set_property PACKAGE_PIN D4 [get_ports {DIG[0]}] +set_property PACKAGE_PIN H2 [get_ports {DIG[7]}] +set_property PACKAGE_PIN D2 [get_ports {DIG[6]}] +set_property PACKAGE_PIN E2 [get_ports {DIG[5]}] +set_property PACKAGE_PIN F3 [get_ports {DIG[4]}] +set_property PACKAGE_PIN F4 [get_ports {DIG[3]}] +set_property PACKAGE_PIN D3 [get_ports {DIG[2]}] +set_property PACKAGE_PIN E3 [get_ports {DIG[1]}] +set_property PACKAGE_PIN J2 [get_ports {SEL[5]}] +set_property PACKAGE_PIN K2 [get_ports {SEL[4]}] +set_property PACKAGE_PIN F6 [get_ports {SEL[3]}] +set_property PACKAGE_PIN G4 [get_ports {SEL[2]}] + + + +set_property PACKAGE_PIN G3 [get_ports {SEL[1]}] +set_property PACKAGE_PIN J4 [get_ports {SEL[0]}] +set_property PACKAGE_PIN J3 [get_ports {SEL[6]}] +set_property PACKAGE_PIN H4 [get_ports {SEL[7]}] diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/char8x16_rom.sv b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/char8x16_rom.sv new file mode 100644 index 0000000..040e9f9 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/char8x16_rom.sv @@ -0,0 +1,2074 @@ +// +// 存放所有 ASCII 字符的字码 +// 该ROM自动综合成Block RAM +// 每个字符为8*16个像素,8列16行 +// 机制:每次读取时需要输入一个 7bit ASCII 值和一个 4bit 行号,共同组成12bit地址 +// ASCII值表示想要读取的字符的ASCII码 +// 4bit行号的取值范围是0~15,指定了想要读取该字符的哪一行像素。 +// 输出8bit,即该字符这一行的8个像素。0代表黑色,1代表白色(黑底白字) +// 因此该模块只是一个普通的8bit数据总线,12bit地址总线的ROM而已 + +module char8x16_rom( + input logic clk, + input logic [11:0] addr, + output logic [ 7:0] data +); + +wire [0:2047] [7:0] rom_cell = { + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h10, + 8'h00, + 8'h10, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h2c, + 8'h24, + 8'h24, + 8'h24, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h68, + 8'h24, + 8'hfe, + 8'h24, + 8'h24, + 8'h24, + 8'h7e, + 8'h24, + 8'h24, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h10, + 8'h7c, + 8'h16, + 8'h12, + 8'h16, + 8'h38, + 8'h68, + 8'h48, + 8'h48, + 8'h3e, + 8'h08, + 8'h08, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h86, + 8'h4b, + 8'h69, + 8'h2e, + 8'h10, + 8'h08, + 8'h68, + 8'h94, + 8'h92, + 8'h63, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h26, + 8'h26, + 8'h1c, + 8'h4e, + 8'h52, + 8'h73, + 8'h62, + 8'hfe, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h20, + 8'h10, + 8'h18, + 8'h08, + 8'h0c, + 8'h0c, + 8'h0c, + 8'h0c, + 8'h08, + 8'h08, + 8'h18, + 8'h30, + 8'h20, + 8'h00, + 8'h00, + 8'h00, + 8'h04, + 8'h08, + 8'h10, + 8'h10, + 8'h30, + 8'h20, + 8'h20, + 8'h20, + 8'h30, + 8'h10, + 8'h18, + 8'h08, + 8'h04, + 8'h00, + 8'h00, + 8'h00, + 8'h10, + 8'h50, + 8'h2c, + 8'h38, + 8'h56, + 8'h10, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h18, + 8'hfe, + 8'h18, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h10, + 8'h0c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h40, + 8'h60, + 8'h20, + 8'h30, + 8'h10, + 8'h10, + 8'h08, + 8'h08, + 8'h04, + 8'h04, + 8'h02, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h66, + 8'h42, + 8'he2, + 8'hda, + 8'hce, + 8'h42, + 8'h66, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h1e, + 8'h12, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h62, + 8'h60, + 8'h60, + 8'h20, + 8'h10, + 8'h08, + 8'h04, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3e, + 8'h60, + 8'h60, + 8'h20, + 8'h3c, + 8'h40, + 8'h40, + 8'h60, + 8'h3e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h30, + 8'h38, + 8'h28, + 8'h24, + 8'h26, + 8'h22, + 8'hff, + 8'h20, + 8'h20, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7e, + 8'h06, + 8'h06, + 8'h06, + 8'h7e, + 8'h40, + 8'h40, + 8'h60, + 8'h3e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h78, + 8'h0c, + 8'h06, + 8'h12, + 8'h6e, + 8'h42, + 8'h42, + 8'h46, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7e, + 8'h40, + 8'h60, + 8'h20, + 8'h30, + 8'h10, + 8'h18, + 8'h08, + 8'h0c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h46, + 8'h42, + 8'h6c, + 8'h38, + 8'h66, + 8'h42, + 8'h42, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h66, + 8'h42, + 8'h42, + 8'h66, + 8'h58, + 8'h40, + 8'h20, + 8'h1e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h10, + 8'h0c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h20, + 8'h18, + 8'h0c, + 8'h06, + 8'h08, + 8'h30, + 8'h60, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7e, + 8'h00, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h0c, + 8'h18, + 8'h20, + 8'h60, + 8'h30, + 8'h08, + 8'h04, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h0c, + 8'h38, + 8'h60, + 8'h60, + 8'h60, + 8'h18, + 8'h08, + 8'h00, + 8'h08, + 8'h08, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h38, + 8'h44, + 8'h82, + 8'h82, + 8'hbb, + 8'had, + 8'ha5, + 8'ha5, + 8'hf5, + 8'h29, + 8'h03, + 8'h02, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h38, + 8'h2c, + 8'h24, + 8'h64, + 8'h46, + 8'h7e, + 8'hc2, + 8'h83, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3e, + 8'h62, + 8'h42, + 8'h62, + 8'h3e, + 8'h42, + 8'h42, + 8'h42, + 8'h3e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h78, + 8'h04, + 8'h02, + 8'h02, + 8'h02, + 8'h02, + 8'h02, + 8'h06, + 8'h7c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3e, + 8'h62, + 8'h42, + 8'hc2, + 8'hc2, + 8'hc2, + 8'h42, + 8'h62, + 8'h1e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7e, + 8'h06, + 8'h06, + 8'h06, + 8'h7e, + 8'h06, + 8'h06, + 8'h06, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7e, + 8'h06, + 8'h06, + 8'h06, + 8'h7e, + 8'h06, + 8'h06, + 8'h06, + 8'h06, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h78, + 8'h06, + 8'h02, + 8'h02, + 8'h73, + 8'h42, + 8'h42, + 8'h46, + 8'h7c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h7e, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7e, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3e, + 8'h20, + 8'h20, + 8'h20, + 8'h20, + 8'h20, + 8'h20, + 8'h22, + 8'h1e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h42, + 8'h22, + 8'h12, + 8'h0a, + 8'h0e, + 8'h1a, + 8'h32, + 8'h22, + 8'h42, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h04, + 8'h04, + 8'h04, + 8'h04, + 8'h04, + 8'h04, + 8'h04, + 8'h04, + 8'h7c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h46, + 8'h66, + 8'he6, + 8'hfa, + 8'hda, + 8'hda, + 8'h83, + 8'h83, + 8'h83, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h46, + 8'h46, + 8'h4e, + 8'h4a, + 8'h5a, + 8'h52, + 8'h72, + 8'h62, + 8'h62, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h46, + 8'hc2, + 8'hc3, + 8'hc3, + 8'hc3, + 8'hc2, + 8'h46, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3e, + 8'h62, + 8'h42, + 8'h42, + 8'h62, + 8'h1e, + 8'h02, + 8'h02, + 8'h02, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h46, + 8'hc2, + 8'hc3, + 8'hc3, + 8'hc3, + 8'hc2, + 8'h46, + 8'h3c, + 8'h18, + 8'hf0, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3e, + 8'h66, + 8'h46, + 8'h66, + 8'h3e, + 8'h36, + 8'h26, + 8'h66, + 8'h46, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7c, + 8'h06, + 8'h02, + 8'h06, + 8'h38, + 8'h60, + 8'h40, + 8'h40, + 8'h3e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'hfe, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h46, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h83, + 8'hc2, + 8'h42, + 8'h46, + 8'h64, + 8'h24, + 8'h2c, + 8'h38, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h83, + 8'h83, + 8'h82, + 8'h92, + 8'hda, + 8'hda, + 8'h6e, + 8'h66, + 8'h66, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'hc2, + 8'h66, + 8'h2c, + 8'h18, + 8'h18, + 8'h38, + 8'h24, + 8'h66, + 8'hc3, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h83, + 8'h42, + 8'h66, + 8'h2c, + 8'h38, + 8'h18, + 8'h18, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7e, + 8'h40, + 8'h20, + 8'h30, + 8'h18, + 8'h08, + 8'h04, + 8'h06, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h38, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h38, + 8'h00, + 8'h00, + 8'h00, + 8'h02, + 8'h04, + 8'h04, + 8'h08, + 8'h08, + 8'h10, + 8'h10, + 8'h30, + 8'h20, + 8'h60, + 8'h40, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h30, + 8'h30, + 8'h30, + 8'h30, + 8'h30, + 8'h30, + 8'h30, + 8'h30, + 8'h30, + 8'h30, + 8'h30, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h38, + 8'h24, + 8'h46, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'hff, + 8'h00, + 8'h00, + 8'h00, + 8'h04, + 8'h08, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h60, + 8'h40, + 8'h7c, + 8'h42, + 8'h62, + 8'h5e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h02, + 8'h02, + 8'h02, + 8'h3a, + 8'h46, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h3e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h78, + 8'h04, + 8'h06, + 8'h02, + 8'h06, + 8'h04, + 8'h7c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h40, + 8'h40, + 8'h40, + 8'h7c, + 8'h46, + 8'h42, + 8'h42, + 8'h42, + 8'h66, + 8'h5c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h46, + 8'h42, + 8'h7e, + 8'h02, + 8'h06, + 8'h7c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'hf0, + 8'h18, + 8'h08, + 8'h08, + 8'h7e, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'hfc, + 8'h66, + 8'h42, + 8'h66, + 8'h1a, + 8'h02, + 8'h7c, + 8'hc2, + 8'h42, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h02, + 8'h02, + 8'h02, + 8'h3a, + 8'h46, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h18, + 8'h18, + 8'h00, + 8'h1e, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h20, + 8'h30, + 8'h00, + 8'h3e, + 8'h20, + 8'h20, + 8'h20, + 8'h20, + 8'h20, + 8'h20, + 8'h20, + 8'h30, + 8'h1e, + 8'h00, + 8'h00, + 8'h00, + 8'h06, + 8'h06, + 8'h06, + 8'h46, + 8'h36, + 8'h1e, + 8'h0e, + 8'h16, + 8'h26, + 8'h46, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h1e, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h6e, + 8'hd2, + 8'hd2, + 8'hd2, + 8'hd2, + 8'hd2, + 8'hd2, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3a, + 8'h46, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3c, + 8'h46, + 8'h42, + 8'hc2, + 8'h42, + 8'h46, + 8'h3c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h3a, + 8'h46, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h3e, + 8'h02, + 8'h02, + 8'h02, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7c, + 8'h46, + 8'h42, + 8'h42, + 8'h42, + 8'h66, + 8'h5c, + 8'h40, + 8'h40, + 8'h40, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h76, + 8'h4e, + 8'hc6, + 8'h06, + 8'h06, + 8'h06, + 8'h06, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7c, + 8'h04, + 8'h04, + 8'h3c, + 8'h60, + 8'h40, + 8'h3e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h08, + 8'h08, + 8'h7f, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h78, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h42, + 8'h66, + 8'h5c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'hc2, + 8'h42, + 8'h66, + 8'h24, + 8'h2c, + 8'h18, + 8'h18, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h83, + 8'h83, + 8'hda, + 8'h5a, + 8'h7a, + 8'h66, + 8'h66, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h46, + 8'h64, + 8'h38, + 8'h18, + 8'h38, + 8'h64, + 8'h46, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'hc2, + 8'h42, + 8'h66, + 8'h24, + 8'h2c, + 8'h38, + 8'h18, + 8'h18, + 8'h0c, + 8'h07, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h7e, + 8'h60, + 8'h30, + 8'h18, + 8'h08, + 8'h04, + 8'h7e, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h70, + 8'h18, + 8'h08, + 8'h08, + 8'h08, + 8'h0c, + 8'h0e, + 8'h08, + 8'h08, + 8'h08, + 8'h08, + 8'h18, + 8'h70, + 8'h00, + 8'h00, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h00, + 8'h00, + 8'h00, + 8'h0c, + 8'h18, + 8'h10, + 8'h10, + 8'h10, + 8'h30, + 8'h70, + 8'h10, + 8'h10, + 8'h10, + 8'h10, + 8'h18, + 8'h0c, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h8e, + 8'hd2, + 8'h60, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00, + 8'h00 +}; + +always @ (posedge clk) + if(addr[11]) + data <= 8'h0; + else + data <= rom_cell[addr[10:0]]; + +endmodule diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/core_alu.sv b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/core_alu.sv new file mode 100644 index 0000000..bae236d --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/core_alu.sv @@ -0,0 +1,85 @@ +module core_alu( + input logic [ 6:0] i_opcode, i_funct7, + input logic [ 2:0] i_funct3, + input logic [31:0] i_num1u, i_num2u, i_pc, i_immu, + output logic o_branch_jalr, + output logic [31:0] o_res, o_branch_jalr_target +); +logic [ 4:0] shamt_rs, shamt_imm; +logic [31:0] num1_plus_imm, pc_plus_imm; +logic signed [31:0] i_num1s, i_num2s, i_imms; + +assign shamt_imm = i_immu[4:0]; +assign shamt_rs = i_num2u[4:0]; +assign num1_plus_imm = i_num1u + i_immu; +assign pc_plus_imm = i_pc + i_immu; +assign i_num1s = i_num1u; +assign i_num2s = i_num2u; +assign i_imms = i_immu; + +always_comb + case(i_opcode) + 7'b1100111 : begin // JALR + o_branch_jalr <= 1'b1; + o_branch_jalr_target <= num1_plus_imm; + end + 7'b1100011 : begin // BRANCH�? + case(i_funct3) + 3'b000 : o_branch_jalr <= (i_num1u == i_num2u); // BEQ + 3'b001 : o_branch_jalr <= (i_num1u != i_num2u); // BNE + 3'b100 : o_branch_jalr <= (i_num1s < i_num2s); // BLT + 3'b101 : o_branch_jalr <= (i_num1s >= i_num2s); // BGE + 3'b110 : o_branch_jalr <= (i_num1u < i_num2u); // BLTU + 3'b111 : o_branch_jalr <= (i_num1u >= i_num2u); // BGEU + default: o_branch_jalr <= 1'b0; + endcase + o_branch_jalr_target <= pc_plus_imm; + end + default : begin // 不跳�? + o_branch_jalr <= 1'b0; + o_branch_jalr_target <= 0; + end + endcase + +always_comb + casex({i_funct7,i_funct3,i_opcode}) + // JAL类与JALR�? + 17'bxxxxxxx_xxx_110x111 : o_res <= i_pc + 4; // JAL, JALR + // LUI�? + 17'bxxxxxxx_xxx_0110111 : o_res <= i_immu; // LUI + // AUIPC�? + 17'bxxxxxxx_xxx_0010111 : o_res <= pc_plus_imm ; // AUIPC + // 算术�? + 17'b0000000_000_0110011 : o_res <= i_num1u + i_num2u; // ADD + 17'bxxxxxxx_000_0010011 : o_res <= num1_plus_imm ; // ADDI + 17'b0100000_000_0110011 : o_res <= i_num1u - i_num2u; // SUB + // 逻辑�? + 17'b0000000_100_0110011 : o_res <= i_num1u ^ i_num2u; // XOR + 17'bxxxxxxx_100_0010011 : o_res <= i_num1u ^ i_immu ; // XORI + 17'b0000000_110_0110011 : o_res <= i_num1u | i_num2u; // OR + 17'bxxxxxxx_110_0010011 : o_res <= i_num1u | i_immu ; // ORI + 17'b0000000_111_0110011 : o_res <= i_num1u & i_num2u; // AND + 17'bxxxxxxx_111_0010011 : o_res <= i_num1u & i_immu ; // ANDI + // 位移�? + 17'b0000000_001_0110011 : o_res <= i_num1u << shamt_rs ; // SLL + 17'b0000000_001_0010011 : o_res <= i_num1u << shamt_imm; // SLLI + 17'b0000000_101_0110011 : o_res <= i_num1u >> shamt_rs ; // SRL + 17'b0000000_101_0010011 : o_res <= i_num1u >> shamt_imm; // SRL + 17'b0100000_101_0110011 : begin // SRA + o_res <= i_num1u >> shamt_rs; + for(int i=0;i< shamt_rs;i++) o_res[31-i] <= i_num1u[31]; + end + 17'b0100000_101_0010011 : begin // SRAI + o_res <= i_num1u >> shamt_imm; + for(int i=0;i=INSTR_CNT) ? 0 : instr_rom_cell[cell_rd_addr]; + else + bus.rd_data <= 0; + end + +endmodule + diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/naive_bus.sv b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/naive_bus.sv new file mode 100644 index 0000000..7e6ded4 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/naive_bus.sv @@ -0,0 +1,26 @@ + +interface naive_bus(); + // read interface + logic rd_req, rd_gnt; + logic [3:0] rd_be; + logic [31:0] rd_addr, rd_data; + // write interface + logic wr_req, wr_gnt; + logic [3:0] wr_be; + logic [31:0] wr_addr, wr_data; + + modport master( + output rd_req, rd_be, rd_addr, + input rd_data, rd_gnt, + output wr_req, wr_be, wr_addr, wr_data, + input wr_gnt + ); + + modport slave( + input rd_req, rd_be, rd_addr, + output rd_data, rd_gnt, + input wr_req, wr_be, wr_addr, wr_data, + output wr_gnt + ); + +endinterface diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/ram.sv b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/ram.sv new file mode 100644 index 0000000..11dd81b --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/ram.sv @@ -0,0 +1,19 @@ +module ram( // 1024B + input logic clk, + input logic i_we, + input logic [ 9:0] i_waddr, i_raddr, + input logic [ 7:0] i_wdata, + output logic [ 7:0] o_rdata +); +initial o_rdata = 8'h0; + +logic [7:0] data_ram_cell [0:1023]; + +always @ (posedge clk) + o_rdata <= data_ram_cell[i_raddr]; + +always @ (posedge clk) + if(i_we) + data_ram_cell[i_waddr] <= i_wdata; + +endmodule diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/ram128B.sv b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/ram128B.sv new file mode 100644 index 0000000..83cc133 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/ram128B.sv @@ -0,0 +1,19 @@ +module ram128B( // 128B + input logic clk, + input logic i_we, + input logic [ 6:0] i_addr, + input logic [ 7:0] i_wdata, + output logic [ 7:0] o_rdata +); +initial o_rdata = 8'h0; + +logic [7:0] data_ram_cell [0:127]; + +always @ (posedge clk) + o_rdata <= data_ram_cell[i_addr]; + +always @ (posedge clk) + if(i_we) + data_ram_cell[i_addr] <= i_wdata; + +endmodule \ No newline at end of file diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/soc_top.sv b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/soc_top.sv new file mode 100644 index 0000000..1cb2220 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/soc_top.sv @@ -0,0 +1,138 @@ +module soc_top #( + parameter UART_RX_CLK_DIV = 108, // 50MHz/4/115200Hz=108 + parameter UART_TX_CLK_DIV = 434, // 50MHz/1/115200Hz=434 + parameter VGA_CLK_DIV = 1 +)( + // clock, typically 50MHz, UART_RX_CLK_DIV and UART_TX_CLK_DIV and VGA_CLK_DIV must be modify when clk is not 50MHz + input logic clk, + // debug uart and user uart shared signal + input logic isp_uart_rx, + output logic isp_uart_tx, + // SEG + output [7:0] SEL, + output [7:0] DIG, + // VGA signal + output logic vga_hsync, vga_vsync, + output logic vga_red, vga_green, vga_blue +); + +logic rst_n; +logic [31:0] boot_addr; +logic [31:0] rd_data ; +logic rd_gnt ; +logic wr_req ; +logic [31:0] wr_addr ; +logic [31:0] wr_data ; +logic wr_gnt ; + +naive_bus bus_masters[3](); +naive_bus bus_slaves[6](); + +assign rd_data = bus_slaves[5].rd_data ; +assign rd_gnt = bus_slaves[5].rd_gnt ; +assign wr_req = bus_slaves[5].wr_req ; +assign wr_addr = bus_slaves[5].wr_addr ; +assign wr_data = bus_slaves[5].wr_data ; +assign wr_gnt = bus_slaves[5].wr_gnt ; + +// shared debug uart and user uart module +isp_uart #( + .UART_RX_CLK_DIV ( UART_RX_CLK_DIV), + .UART_TX_CLK_DIV ( UART_TX_CLK_DIV) +) isp_uart_inst( + .clk ( clk ), + .i_uart_rx ( isp_uart_rx ), + .o_uart_tx ( isp_uart_tx ), + .o_rst_n ( rst_n ), + .o_boot_addr ( boot_addr ), + .bus ( bus_masters[0] ), + .user_uart_bus ( bus_slaves[4] ) +); + +// RV32I Core +core_top core_top_inst( + .clk ( clk ), + .rst_n ( rst_n ), + .i_boot_addr ( boot_addr ), + .instr_master ( bus_masters[2] ), + .data_master ( bus_masters[1] ) +); + +// 指令ROM +instr_rom instr_rom_inst( + .clk ( clk ), + .rst_n ( rst_n ), + .bus ( bus_slaves[0] ) +); + +// 指令RAM +ram_bus_wrapper instr_ram_inst( + .clk ( clk ), + .rst_n ( rst_n ), + .bus ( bus_slaves[1] ) +); + +// 数据RAM +ram_bus_wrapper data_ram_inst( + .clk ( clk ), + .rst_n ( rst_n ), + .bus ( bus_slaves[2] ) +); + + +// 显存 +video_ram #( + .VGA_CLK_DIV ( VGA_CLK_DIV ) +)video_ram_inst( + .clk ( clk ), + .rst_n ( rst_n ), + .bus ( bus_slaves[3] ), + .o_vsync ( vga_vsync ), + .o_hsync ( vga_hsync ), + .o_red ( vga_red ), + .o_green ( vga_green ), + .o_blue ( vga_blue ) +); + + +//SEG +pout_seg p0( + .clk (clk ), + .rst_n (rst_n ), + .SEL (SEL ), + .DIG (DIG ), + .rd_data (rd_data ), + .rd_gnt (rd_gnt ), + .wr_req (wr_req ), + .wr_addr (wr_addr ), + .wr_data (wr_data ), + .wr_gnt (wr_gnt ) +); + +// 3��?5从�?�线仲裁��? +// +// 主(越靠前优先级越高): +// 0. UART Debugger? +// 1. Core Data Master +// 2. Core Instruction Master +// +// 从: +// 1. 指令ROM��? 地址空间 00000000~00000fff +// 2. 指令RAM��? 地址空间 00008000~00008fff +// 3. 数据RAM��? 地址空间 00010000~00010fff +// 4. 显存RAM��? 地址空间 00020000~00020fff +// 5. 用户UART�? 地址空间 00030000~00030003 +naive_bus_router #( + .N_MASTER ( 3 ), + .N_SLAVE ( 6 ), + .SLAVES_MASK ( {32'h0000_000f , 32'h0000_0003 , 32'h0000_0fff , 32'h0000_0fff , 32'h0000_0fff , 32'h0000_0fff } ), + .SLAVES_BASE ( {32'h0003_1000 , 32'h0003_0000 , 32'h0002_0000 , 32'h0001_0000 , 32'h0000_8000 , 32'h0000_0000 } ) +) soc_bus_router_inst ( + .clk ( clk ), + .rst_n ( rst_n ), + .masters ( bus_masters ), + .slaves ( bus_slaves ) +); + +endmodule + diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/uart_rx.sv b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/uart_rx.sv new file mode 100644 index 0000000..003e9e1 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/uart_rx.sv @@ -0,0 +1,53 @@ +module uart_rx #( + parameter UART_RX_CLK_DIV = 108 // 50MHz/4/115200Hz=108 +)( + input logic clk, + input logic i_rx, + output logic o_ready, + output logic [7:0] o_data +); + +logic rx_bit, busy, last_busy=1'b0; +logic [ 5:0] shift = 6'h0, status = 6'h0; +logic [ 7:0] databuf = 8'h0; +logic [31:0] cnt = 0; + +initial o_ready = 1'b0; +initial o_data = 8'h0; + +assign busy = (status!=6'h0); +assign rx_bit = (shift[0]&shift[1]) | (shift[0]&i_rx) | (shift[1]&i_rx); + +always @ (posedge clk) + last_busy <= busy; + +always @ (posedge clk) + o_ready <= (~busy & last_busy); + +always @ (posedge clk) + cnt <= (cnt7'd0; +always @ (posedge clk) + busy_latch <= busy; + +assign tx_buffer = {2'b11, 8'h0A , // 0x0A = \n , a end of line + 2'b01, i_data[0], + 2'b01, i_data[1], + 2'b01, i_data[2], + 2'b01, i_data[3], + 2'b01, i_data[4], + 2'b01, i_data[5], + 2'b01, i_data[6], + 2'b01, i_data[7], + 2'b01, 8'b11111111 }; + +always @ (posedge clk) + cnt <= (cnt5'd0) begin + if(cnt==0) begin + if(tx_cnt==TX_CNT) begin + {tx_shift, o_uart_tx} <= ~{fifo_rd_data, 1'b1}; + fifo_rd_pointer <= fifo_rd_pointer + 10'h1; + end else begin + {tx_shift, o_uart_tx} <= {1'b0, tx_shift[7:1], ~tx_shift[0]}; + end + tx_cnt <= tx_cnt - 5'd1; + end + end else begin + o_uart_tx <= 1'b1; + tx_cnt <= fifo_empty ? 5'd0 : TX_CNT; + end + end + +ram ram_for_uart_tx_fifo_inst( + .clk ( clk ), + .i_we ( bus.wr_req & wr_addr_valid & bus.wr_be[0] & ~fifo_full ), + .i_waddr ( fifo_wr_pointer ), + .i_wdata ( bus.wr_data[7:0] ), + .i_raddr ( fifo_rd_pointer ), + .o_rdata ( fifo_rd_data ) +); + +endmodule diff --git a/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/vga_char_86x32.sv b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/vga_char_86x32.sv new file mode 100644 index 0000000..3233b56 --- /dev/null +++ b/hardware/Vivado/E-ELEMENTS/RISC-V.srcs/sources_1/imports/RTL/vga_char_86x32.sv @@ -0,0 +1,188 @@ +module vga_char_86x32 #( + parameter VGA_CLK_DIV = 1 +)( + // clock + input logic clk, rst_n, + // vga interfaces + output logic hsync, vsync, + output logic red, green, blue, + // user interface + output logic req, + output logic [11:0] addr, + input logic [ 7:0] ascii +); +localparam H_END = 10'd688, + H_BRSTART = H_END + 10'd4 , + H_BREND = H_BRSTART + 10'd30 , + H_SYNCSTART = H_BREND + 10'd25 , + H_SYNCEND = H_SYNCSTART + 10'd128, + H_BLSTART = H_SYNCEND + 10'd89 , + H_BLEND = H_BLSTART + 10'd30 , + H_PERIOD = H_BLEND + 10'd4 , + V_END = 10'd512, + V_BRSTART = V_END + 10'd4 , + V_BREND = V_BRSTART + 10'd30 , + V_SYNCSTART = V_BREND + 10'd38 , + V_SYNCEND = V_SYNCSTART + 10'd4 , + V_BLSTART = V_SYNCEND + 10'd66 , + V_BLEND = V_BLSTART + 10'd30 , + V_PERIOD = V_BLEND + 10'd4 ; + +logic [3:0] rlp=4'h0, clp=4'h0, hsp=4'h0, vsp=4'h0; +logic vlbr=1'b0, vgbl=1'b0, vlbl=1'b0, vgbr=1'b0, hlbr=1'b0, hgbl=1'b0, hlbl=1'b0, hgbr=1'b0; +logic vir=1'b0, hir=1'b0, vbr=1'b0, hbr=1'b0, vbl=1'b0, hbl=1'b0, hb=1'b0, vb=1'b0, border=1'b0; +logic [9:0] cnt = 0, hcnt = 0, vcnt = 0; +logic req1 = 1'b0, req2 = 1'b0; +logic [7:0] ascii_bufferout, ascii_latch=8'h0, ascii_to_rom; +logic [7:0] rom_data; +logic [6:0] x_h, x_h1=7'h0, x_h2=7'h0; +logic [5:0] y_h; + +logic [2:0] x_l, x_l1 = 3'h0, x_l2 = 3'h0, x_l3 = 3'h0, x_l4 = 3'h0; +logic [3:0] y_l, y_l1 = 4'h0, y_l2 = 4'h0, y_l3 = 4'h0; + +assign {x_h, x_l} = hcnt; +assign {y_h, y_l} = vcnt; + +initial begin hsync=1'b0; vsync=1'b0; {red,green,blue}=3'h0; req=1'b0; addr = 12'h0; end + +always @ (posedge clk) + if(~rst_n) begin + vlbr<= 1'b0; + vgbl<= 1'b0; + vlbl<= 1'b0; + vgbr<= 1'b0; + hlbr<= 1'b0; + hgbl<= 1'b0; + hlbl<= 1'b0; + hgbr<= 1'b0; + vir <= 1'b0; + hir <= 1'b0; + vbr <= 1'b0; + hbr <= 1'b0; + vbl <= 1'b0; + hbl <= 1'b0; + hb <= 1'b0; + vb <= 1'b0; + border <= 1'b0; + end else begin + vlbr<= vcnt < V_BREND ; + vgbl<= vcnt >= V_BLSTART; + vlbl<= vcnt < V_BLEND ; + vgbr<= vcnt >= V_BRSTART; + hlbr<= hcnt < H_BREND ; + hgbl<= hcnt >= H_BLSTART; + hlbl<= hcnt < H_BLEND; + hgbr<= hcnt >= H_BRSTART; + vir <= vlbr | vgbl; + hir <= hlbr | hgbl; + vbr <= vgbr & vlbr; + hbr <= hgbr & hlbr; + vbl <= vgbl & vlbl; + hbl <= hgbl & hlbl; + hb <= (hbr | hbl) & vir; + vb <= (vbr | vbl) & hir; + border <= hb | vb; + end + +always @ (posedge clk or negedge rst_n) + if(~rst_n) begin + cnt <= 10'h0; + hcnt <= 10'h0; + vcnt <= 10'h0; + end else begin + cnt <= (cnt<(VGA_CLK_DIV-1)) ? cnt + 10'h1 : 10'h0; + if(cnt==10'h0) begin + if(hcnt < H_PERIOD) begin + hcnt <= hcnt + 10'h1; + end else begin + hcnt <= 10'h0; + vcnt <= (vcnt=H_SYNCSTART && hcnt=V_SYNCSTART && vcnt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default_dashboard + + + + + +