[{"data":1,"prerenderedAt":309},["ShallowReactive",2],{"navigation":3,"\u002Fverilog\u002Fmips2":144,"\u002Fverilog\u002Fmips2-surround":304},[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":96,"body":146,"description":294,"extension":295,"links":296,"meta":297,"navigation":299,"path":97,"seo":300,"stem":98,"__hash__":303},"docs\u002F4.verilog\u002F02.mips2.md",{"type":147,"value":148,"toc":285},"minimark",[149,153,175,178,222,225,246,249,256,276,282],[150,151,152],"h2",{"id":152},"说在前面",[154,155,156],"blockquote",{},[157,158,159,163,166,169,172],"ul",{},[160,161,162],"li",{},"开发环境：Vivado",[160,164,165],{},"语言：Verilog",[160,167,168],{},"cpu框架：Mips",[160,170,171],{},"控制器：组合逻辑",[160,173,174],{},"说明：单周期处理器是指所有的指令在一个时钟周期内完成的处理器，尽管不同指令执行时间不同，但对单周期处理器而言，时钟周期必须设计成对所有指令都等长。\n在单周期处理器中，一条指令执行过程中数据通路的任何资源都不能被重复使用，因此，任何需要被多次使用的资源（如加法器）都需要设置多个，否则就会发生资源冲突。",[150,176,177],{"id":177},"总体设计",[157,179,180,183,195,215],{},[160,181,182],{},"常规套路是从简单的八条指令cpu讲起，然后自己去扩展，31条指令cpu按照八条的那个流程来，无非是工作量大了点，网上八条指令cpu的教程也挺多的。",[160,184,185,186,191],{},"指令介绍\ncpu的理论知识就不再多讲了，首先来看看我们要实现的31条指令。\n",[187,188],"img",{"alt":189,"src":190},"instruction1",".\u002Fverilog\u002F2.webp",[187,192],{"alt":193,"src":194},"instruction2",".\u002Fverilog\u002F3.webp",[160,196,197,198,201,208,210,211],{},"这些指令的详细介绍mips官方有给出：",[199,200],"br",{},[202,203,207],"a",{"href":204,"rel":205},"https:\u002F\u002Fs3-eu-west-1.amazonaws.com\u002Fdownloads-mips\u002Fdocuments\u002FMD00086-2B-MIPS32BIS-AFP-05.04.pdf",[206],"nofollow","mips指令集",[199,209],{},"在这部分（这个pdf带跳转功能的）\n",[187,212],{"alt":213,"src":214},"instruction3",".\u002Fverilog\u002F4.webp",[160,216,217,218],{},"在实现过程中，这31条指令看起来挺多，但是实际上部分指令的数据通路几乎一样，比如add---nor这几个，一定程度上减少了工作量。\n",[219,220,221],"strong",{},"注意：这里面比较难的几条指令是lw，sw，jal",[150,223,224],{"id":224},"设计流程",[226,227,228,231,234,237,240,243],"ol",{},[160,229,230],{},"确定各条指令所需要的部件",[160,232,233],{},"确定各条指令中各个部件的输入输出关系",[160,235,236],{},"确定数据通路总图",[160,238,239],{},"根据各条指令所需要的部件以及总通路图，确定指令操作时间表（真值表）",[160,241,242],{},"根据指令操作时间表，设计控制器",[160,244,245],{},"根据总通路图以及指令操作时间表，码代码去，编写Verilog代码",[150,247,248],{"id":248},"总图",[250,251,252],"p",{},[187,253],{"alt":254,"src":255},"total",".\u002Fverilog\u002F5.webp",[226,257,258,261,264,267,270,273],{},[160,259,260],{},"PC存放指令地址（通过pc+4来读取下一条指令）",[160,262,263],{},"(ram1)IMEM存放指令集",[160,265,266],{},"根据指令地址从IMEM中取出对应指令",[160,268,269],{},"指令读取出来后送入指令译码器（具体是哪一条指令）",[160,271,272],{},"译码后将结果送入控制器，将该条指令相关部件的控制信号置为1（激活），使得cpu中该条指令的数据通路激活，进而执行此指令",[160,274,275],{},"pc+4获取下一条指令，循环操作",[250,277,278],{},[279,280,281],"del",{},"以上就是cpu的具体执行过程了，看起来还是挺简单的嘛。",[250,283,284],{},"以上就是这节的内容了，下一节将具体介绍各条指令各个部件。",{"title":286,"searchDepth":287,"depth":288,"links":289},"",1,2,[290,291,292,293],{"id":152,"depth":288,"text":152},{"id":177,"depth":288,"text":177},{"id":224,"depth":288,"text":224},{"id":248,"depth":288,"text":248},"详解31条MIPS指令单周期CPU的总体设计方案，包括指令分类、数据通路设计、控制器设计流程，以及lw、sw、jal等难点指令的处理思路。","md",null,{"date":298},"2018-07-14 11:27:27",true,{"title":301,"description":302},"【verilog\u002Fmips】31条指令单周期cpu设计(Verilog)-(二)总体设计","详细介绍31条MIPS指令单周期CPU的总体架构设计，包括指令集分析、数据通路规划、控制器真值表设计方法，适合Verilog CPU设计初学者。","nJeB0qh-V-0fk5y5xhhTxaFMFH8JnCeFIW2rxtVEpxo",[305,307],{"title":92,"path":93,"stem":94,"description":306,"children":-1},"介绍31条指令单周期MIPS CPU设计所需的开发环境，包括Vivado安装配置、ModelSim仿真工具、Mars MIPS模拟器以及Processon等画图工具的使用说明。",{"title":100,"path":101,"stem":102,"description":308,"children":-1},"详细分析31条MIPS指令的数据通路设计，包括ADD、SUB、LW、SW、JAL等指令的部件需求、输入输出关系和数据通路图，附完整Verilog实现参考。",1776616491826]