- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
11.6 16位乘法器状态机实现 二进制乘法可简单地划分为循环、累加来完成乘法运算。而16位乘法由循环、累加、初始空闲来构成乘法状态机的三态。输入16位mux、pmux,输出32位out、mid,复位信号reset。 from state to state condition 1 add shift reset 2 shift add !nstate16 reset 3 idle add reset 4 shift idle nstate16 5 add idle !reset 6 idle idle !reset 安康学院 电子与信息工程系电子教研室 11.6 16位乘法器状态机实现 module fsm_mult16(mux, pmux, clk, reset, out, mid, done); input[15:0] mux,pmux; //mux为被乘数,pmux为乘数 input clk, reset; output[31:0] out, mid; //mid为中间临时变量 output done; //done由0变为1,表示运算完成 reg[31:0] out, mid; reg done; integer count; reg[1:0] pstate, nstate; parameter idle=2b00, add=2b01, shift=2b10; /*状态机实现:将状态转移单独写成一个模块,将状态的操作和 判断等写到另一个模块中,在Verilog代码中, 相当于使用了两个always block*/ always @(posedge clk) //第一个always block时序模块,表示状态转移 if(!reset) begin pstate=idle; end else begin pstate=nstate; end 安康学院 电子与信息工程系电子教研室 11.6 16位乘法器状态机实现 //第一个always block组合逻辑模块,表示状态的操作和判断 always @(pstate or reset) begin nstate=idle; case(pstate) idle: //初始状态 begin out=0; done=0; count=0; mid[15:0]=mux; mid[31:16]=16b0; nstate=add; end add: //相加 begin if(pmux[count]) out=out+mid; nstate=shift; end shift: //移位 begin count=count+1; //位数计数加1 mid={mid[30:0],1b0}; //中间值左移 if(count==16) //位数计数到16,下一个状态为idle begin nstate=idle; done=1; end else nstate=add; //位数计数未到16,下一个状态为add end default: nstate=id
您可能关注的文档
最近下载
- Unit 4 My Family Lesson 1 My Family Photo 说课稿2024-2025学年冀教版英语七年级上册.docx VIP
- 《工科数学分析》期末考试试题(A卷)参考评分标准.doc VIP
- 《船舶修造气象风险等级划分及应对》DB3310T 123-2025.docx VIP
- 无机保温砂浆专项施工方案(屋面_外墙)方案(1).doc
- 化学工艺概论题库(含答案).pdf VIP
- 2025 年黑龙江中职单招考试英语全真模拟卷.docx VIP
- 印刷厂安全培训课件.ppt VIP
- TOGAF基础级中文习题.docx VIP
- 研读《创新实干促发展》心得体会.docx VIP
- 《人工智能应用概论(第2版)》PPT完整全套教学课件.pptx
原创力文档


文档评论(0)