[{"data":1,"prerenderedAt":683},["ShallowReactive",2],{"navigation":3,"\u002Fverilog\u002Fmips4":144,"\u002Fverilog\u002Fmips4-surround":678},[4,36,53,86,131],{"title":5,"path":6,"stem":7,"children":8,"icon":35},"Golang","\u002Fgolang","1.golang\u002F1.index",[9,11,15,19,23,27,31],{"title":10,"path":6,"stem":7},"golang-各种golang学习以及使用过程中记录",{"title":12,"path":13,"stem":14},"gopls-官方gopls内置mcp server的基本使用","\u002Fgolang\u002Fgopls_mcp_usages","1.golang\u002F2.gopls_mcp_usages",{"title":16,"path":17,"stem":18},"实践-(一)创建简单的http服务器","\u002Fgolang\u002Fgo_http_simple_server","1.golang\u002F3.go_http_simple_server",{"title":20,"path":21,"stem":22},"wails入门系列(一)环境安装与demo","\u002Fgolang\u002Fwails_start","1.golang\u002F4.wails_start",{"title":24,"path":25,"stem":26},"wails入门系列(二)无边框应用的菜单栏以及窗口拖拽","\u002Fgolang\u002Fwails_frameless","1.golang\u002F5.wails_frameless",{"title":28,"path":29,"stem":30},"go\u002Fredis-redis中大数字自动转换成指数形式的处理","\u002Fgolang\u002Fredis_big_num","1.golang\u002F6.redis_big_num",{"title":32,"path":33,"stem":34},"go\u002F方法记录-局部坐标与世界坐标间的相互转换(位置\u002F方向)","\u002Fgolang\u002Fworld_local_transform","1.golang\u002F7.world_local_transform",false,{"title":37,"icon":35,"path":38,"stem":39,"children":40,"page":35},"瞎折腾","\u002Ftinkering","2.tinkering",[41,45,49],{"title":42,"path":43,"stem":44},"mi50显卡ubuntu运行大模型开坑(一)显卡准备以及驱动安装","\u002Ftinkering\u002Fmi50_gpu_llm_1","2.tinkering\u002F1.mi50_gpu_llm_1",{"title":46,"path":47,"stem":48},"mi50显卡ubuntu运行大模型开坑(二)使用llama.cpp部署Qwen3系列","\u002Ftinkering\u002Fmi50_gpu_llm_2","2.tinkering\u002F2.mi50_gpu_llm_2",{"title":50,"path":51,"stem":52},"mi50显卡ubuntu运行大模型开坑(三)安装风扇并且控制转速","\u002Ftinkering\u002Fmi50_gpu_llm_3","2.tinkering\u002F3.mi50_gpu_llm_3",{"title":54,"icon":35,"path":55,"stem":56,"children":57,"page":35},"LLM","\u002Fllm","3.llm",[58,62,66,70,74,78,82],{"title":59,"path":60,"stem":61},"langchain入门-安装以及初次使用(deepseek api版本)","\u002Fllm\u002Flangchain1","3.llm\u002F01.langchain1",{"title":63,"path":64,"stem":65},"langchain入门-使用langchain调用本地部署的大模型(以llama.cpp以及ollama为例)","\u002Fllm\u002Flangchain2","3.llm\u002F02.langchain2",{"title":67,"path":68,"stem":69},"langchain入门-使用langchain编写一个简单的聊天机器人(DeepSeek API&命令行版本)","\u002Fllm\u002Flangchain3","3.llm\u002F03.langchain3",{"title":71,"path":72,"stem":73},"langchain入门-使用langchain构建一个拥有RAG能力的代码问答应用(DeepSeek API&本地bge-m3&命令行版本)","\u002Fllm\u002Flangchain4","3.llm\u002F04.langchain4",{"title":75,"path":76,"stem":77},"golang\u002Feino eino框架的基础使用 Message以及ChatModel入门","\u002Fllm\u002Feino1","3.llm\u002F05.eino1",{"title":79,"path":80,"stem":81},"golang\u002Feino eino框架的基础使用 在ChatModel中使用工具","\u002Fllm\u002Feino2","3.llm\u002F06.eino2",{"title":83,"path":84,"stem":85},"llm\u002Fagent agent-zero初步搭建与使用","\u002Fllm\u002Fagent_zero_start","3.llm\u002F07.agent_zero_start",{"title":87,"icon":35,"path":88,"stem":89,"children":90,"page":35},"Verilog","\u002Fverilog","4.verilog",[91,95,99,103,107,111,115,119,123,127],{"title":92,"path":93,"stem":94},"31条指令单周期cpu设计(Verilog)-(一)相关软件","\u002Fverilog\u002Fmips1","4.verilog\u002F01.mips1",{"title":96,"path":97,"stem":98},"31条指令单周期cpu设计(Verilog)-(二)总体设计","\u002Fverilog\u002Fmips2","4.verilog\u002F02.mips2",{"title":100,"path":101,"stem":102},"31条指令单周期cpu设计(Verilog)-(三)指令分析","\u002Fverilog\u002Fmips3","4.verilog\u002F03.mips3",{"title":104,"path":105,"stem":106},"31条指令单周期cpu设计(Verilog)-(四)数据输入输出关系表","\u002Fverilog\u002Fmips4","4.verilog\u002F04.mips4",{"title":108,"path":109,"stem":110},"31条指令单周期cpu设计(Verilog)-(五)整体数据通路图设计","\u002Fverilog\u002Fmips5","4.verilog\u002F05.mips5",{"title":112,"path":113,"stem":114},"31条指令单周期cpu设计(Verilog)-(六)指令操作时间表设计","\u002Fverilog\u002Fmips6","4.verilog\u002F06.mips6",{"title":116,"path":117,"stem":118},"31条指令单周期cpu设计(Verilog)-(七)整体代码结构","\u002Fverilog\u002Fmips7","4.verilog\u002F07.mips7",{"title":120,"path":121,"stem":122},"31条指令单周期cpu设计(Verilog)-(八)上代码→指令译码以及控制器","\u002Fverilog\u002Fmips8","4.verilog\u002F08.mips8",{"title":124,"path":125,"stem":126},"31条指令单周期cpu设计(Verilog)-(九)上代码→基础模块实现","\u002Fverilog\u002Fmips9","4.verilog\u002F09.mips9",{"title":128,"path":129,"stem":130},"31条指令单周期cpu设计(Verilog)-(十)上代码→顶层模块设计&总结","\u002Fverilog\u002Fmips10","4.verilog\u002F10.mips10",{"title":132,"icon":35,"path":133,"stem":134,"children":135,"page":35},"Rust","\u002Frust","5.rust",[136,140],{"title":137,"path":138,"stem":139},"egui(一)从编译运行template开始","\u002Frust\u002Fegui1","5.rust\u002F01.egui1",{"title":141,"path":142,"stem":143},"egui(二)看看template的main函数：日志输出以及eframe run_native","\u002Frust\u002Fegui2","5.rust\u002F02.egui2",{"id":145,"title":104,"body":146,"description":668,"extension":669,"links":670,"meta":671,"navigation":673,"path":105,"seo":674,"stem":106,"__hash__":677},"docs\u002F4.verilog\u002F04.mips4.md",{"type":147,"value":148,"toc":658},"minimark",[149,153,172,175,193,196,216,220],[150,151,152],"h2",{"id":152},"说在前面",[154,155,156],"blockquote",{},[157,158,159,163,166,169],"ul",{},[160,161,162],"li",{},"开发环境：Vivado",[160,164,165],{},"语言：Verilog",[160,167,168],{},"cpu框架：Mips",[160,170,171],{},"控制器：组合逻辑",[150,173,174],{"id":174},"表格作用",[157,176,177],{},[160,178,179,180,186,187,192],{},"这张表用于设计",[181,182,185],"span",{"className":183},[184],"text-success","整体的数据通路图"," （在",[188,189,191],"a",{"href":190},".\u002Fmips2","第二篇","中已经给出来了），而总数据通路图是用于设计Verilog代码整体结构的。",[150,194,195],{"id":195},"设计流程",[157,197,198],{},[160,199,200,201,205,206,211,212],{},"在",[188,202,204],{"href":203},".\u002Fmips3","上一篇文章","中分析了每一条指令的",[181,207,210],{"className":208},[209],"text-info","具体数据通路图"," ，由于篇幅问题没有将单条指令的数据输入输出关系列举出来，所以就在这里整合一下 ",[213,214,215],"del",{},"（反正单条的数据通路图都有了）",[217,218,219],"h3",{"id":219},"步骤",[157,221,222,309,417],{},[160,223,224,225,229,230,233,234],{},"将31条指令涉及到的",[226,227,228],"strong",{},"所有部件","作为表头，首列为",[226,231,232],{},"指令","；RF为寄存器堆；",[235,236,237,238],"table",{},"\n  ",[239,240,241,242,241,290,237],"thead",{},"\n    ",[243,244,245,246,245,250,245,253,245,256,245,259,245,262,245,266,245,269,245,272,245,275,245,278,245,281,245,284,245,287,241],"tr",{},"\n      ",[247,248,232],"th",{"rowSpan":249},2,[247,251,252],{"rowSpan":249},"PC",[247,254,255],{"rowSpan":249},"NPC",[247,257,258],{"rowSpan":249},"IM",[247,260,261],{},"RF",[247,263,265],{"colSpan":264},"2","ALU",[247,267,268],{"rowSpan":249},"EXT16",[247,270,271],{"rowSpan":249},"EXT5",[247,273,274],{"rowSpan":249},"EXT18",[247,276,277],{"colSpan":264},"ADD",[247,279,280],{"colSpan":264},"II",[247,282,283],{"colSpan":264,"rowSpan":249},"DMEN",[247,285,286],{"rowSpan":249},"EXT1",[247,288,289],{"rowSpan":249},"ADD8",[243,291,245,292,245,295,245,298,245,301,245,303,245,305,245,307,241],{},[247,293,294],{},"WData",[247,296,297],{},"A",[247,299,300],{},"B",[247,302,297],{},[247,304,300],{},[247,306,297],{},[247,308,300],{},[160,310,311,312,315,316,320,321],{},"根据上一节内容，将每条指令",[226,313,314],{},"各个部件的输入填入表格","，未涉及的为空；NPC表示",[181,317,319],{"className":318},[184],"部件NPC的输出","，其他同理；Rs\\Rt为寄存器堆的两个输出",[235,322,237,323,237,371],{},[239,324,241,325,241,355,237],{},[243,326,245,327,245,329,245,331,245,333,245,335,245,337,245,339,245,341,245,343,245,345,245,347,245,349,245,351,245,353,241],{},[247,328,232],{"rowSpan":249},[247,330,252],{"rowSpan":249},[247,332,255],{"rowSpan":249},[247,334,258],{"rowSpan":249},[247,336,261],{},[247,338,265],{"colSpan":264},[247,340,268],{"rowSpan":249},[247,342,271],{"rowSpan":249},[247,344,274],{"rowSpan":249},[247,346,277],{"colSpan":264},[247,348,280],{"colSpan":264},[247,350,283],{"colSpan":264,"rowSpan":249},[247,352,286],{"rowSpan":249},[247,354,289],{"rowSpan":249},[243,356,245,357,245,359,245,361,245,363,245,365,245,367,245,369,241],{},[247,358,294],{},[247,360,297],{},[247,362,300],{},[247,364,297],{},[247,366,300],{},[247,368,297],{},[247,370,300],{},[372,373,241,374,237],"tbody",{},[243,375,245,376,245,380,245,382,245,384,245,386,245,388,245,391,245,394,245,397,245,399,245,401,245,403,245,405,245,407,245,409,245,411,245,413,245,415,241],{},[377,378,379],"td",{},"add",[377,381,255],{},[377,383,252],{},[377,385,252],{},[377,387,265],{},[377,389,390],{},"Rs",[377,392,393],{},"Rt",[377,395,396],{}," ",[377,398,396],{},[377,400,396],{},[377,402,396],{},[377,404,396],{},[377,406,396],{},[377,408,396],{},[377,410,396],{},[377,412,396],{},[377,414,396],{},[377,416,396],{},[160,418,419,420,424,425,429,432,433,549,551,552],{},"得到表格\n",[421,422],"img",{"alt":379,"src":423},".\u002Fverilog\u002F37.webp","\n表中的imm16、offset等请",[181,426,428],{"className":427},[184],"根据指令的具体描述理解",[430,431],"br",{},"例如addi中的imm16，参考第二篇中：",[235,434,435,456],{},[239,436,437],{},[243,438,439,442,445,448,451,454],{},[247,440,441],{},"Bit#",[247,443,444],{},"31..26",[247,446,447],{},"25..21",[247,449,450],{},"20..16",[247,452,453],{},"15..0",[247,455],{},[372,457,458,477],{},[243,459,460,463,466,469,472,475],{},[377,461,462],{},"I-type",[377,464,465],{},"op",[377,467,468],{},"rs",[377,470,471],{},"rt",[377,473,474],{},"immediate",[377,476],{},[243,478,479,482,485,487,489,492],{},[377,480,481],{},"addi",[377,483,484],{},"001000",[377,486,468],{},[377,488,468],{},[377,490,491],{},"immediate(-~+)",[377,493,494,495,548],{},"addi ",[181,496,499,527],{"className":497},[498],"katex",[181,500,503],{"className":501},[502],"katex-mathml",[504,505,507],"math",{"xmlns":506},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[508,509,510,522],"semantics",{},[511,512,513,517],"mrow",{},[514,515,516],"mn",{},"1",[518,519,521],"mo",{"separator":520},"true",",",[523,524,526],"annotation",{"encoding":525},"application\u002Fx-tex","1,",[181,528,531],{"className":529,"ariaHidden":520},[530],"katex-html",[181,532,535,540,544],{"className":533},[534],"base",[181,536],{"className":537,"style":539},[538],"strut","height:0.8389em;vertical-align:-0.1944em;",[181,541,516],{"className":542},[543],"mord",[181,545,521],{"className":546},[547],"mpunct","2,100",[430,550],{},"又如lw中的offset：",[235,553,554,570],{},[239,555,556],{},[243,557,558,560,562,564,566,568],{},[247,559,441],{},[247,561,444],{},[247,563,447],{},[247,565,450],{},[247,567,453],{},[247,569],{},[372,571,572,586],{},[243,573,574,576,578,580,582,584],{},[377,575,462],{},[377,577,465],{},[377,579,468],{},[377,581,471],{},[377,583,474],{},[377,585],{},[243,587,588,591,594,596,598,600],{},[377,589,590],{},"lw",[377,592,593],{},"100011",[377,595,468],{},[377,597,471],{},[377,599,491],{},[377,601,602,603,657],{},"lw ",[181,604,606,629],{"className":605},[498],[181,607,609],{"className":608},[502],[504,610,611],{"xmlns":506},[508,612,613,626],{},[511,614,615,617,619,622],{},[514,616,516],{},[518,618,521],{"separator":520},[514,620,621],{},"10",[518,623,625],{"stretchy":624},"false","(",[523,627,628],{"encoding":525},"1,10(",[181,630,632],{"className":631,"ariaHidden":520},[530],[181,633,635,639,642,645,650,653],{"className":634},[534],[181,636],{"className":637,"style":638},[538],"height:1em;vertical-align:-0.25em;",[181,640,516],{"className":641},[543],[181,643,521],{"className":644},[547],[181,646],{"className":647,"style":649},[648],"mspace","margin-right:0.1667em;",[181,651,621],{"className":652},[543],[181,654,625],{"className":655},[656],"mopen","2)",{"title":659,"searchDepth":660,"depth":249,"links":661},"",1,[662,663,664],{"id":152,"depth":249,"text":152},{"id":174,"depth":249,"text":174},{"id":195,"depth":249,"text":195,"children":665},[666],{"id":219,"depth":667,"text":219},3,"详解31条MIPS指令数据通路设计中各部件的输入输出关系表，包含PC、NPC、ALU、寄存器堆等部件的详细连接关系，用于Verilog代码结构设计。","md",null,{"date":672},"2019-03-21 16:16:43",true,{"title":675,"description":676},"【verilog\u002Fmips】31条指令单周期cpu设计(Verilog)-(四)数据输入输出关系表","详细介绍31条MIPS单周期CPU各部件的输入输出关系表设计方法，包括PC、NPC、ALU、寄存器堆、数据存储器等部件的连接关系，指导Verilog代码结构编写。","pkpbrf4BbQKq8KphZNUkfjU_rLiywE9N191VwqZGz-0",[679,681],{"title":100,"path":101,"stem":102,"description":680,"children":-1},"详细分析31条MIPS指令的数据通路设计，包括ADD、SUB、LW、SW、JAL等指令的部件需求、输入输出关系和数据通路图，附完整Verilog实现参考。",{"title":108,"path":109,"stem":110,"description":682,"children":-1},"详解31条MIPS单周期CPU的整体数据通路图设计，包括PC、NPC、ALU、寄存器堆、MUX等部件的连接方式，以及Verilog模块化实现思路。",1776616492374]