当前位置: 首页 > news >正文

什么网站招聘外国人做兼职深圳市住房与建设局实名制网站

什么网站招聘外国人做兼职,深圳市住房与建设局实名制网站,中企动力公司,外贸网站建设资料0 回顾 前面的内容中#xff0c;第一类R型指令分析#xff0c;我们完成了一类R型指令的设计#xff0c;完成了其数据通路#xff0c;构建了相应的部件#xff0c;并且完成了从ROM中取指#xff0c;成功进行了基本的功能仿真#xff0c;进行了综合和实现#xff0c;但是…0 回顾 前面的内容中第一类R型指令分析我们完成了一类R型指令的设计完成了其数据通路构建了相应的部件并且完成了从ROM中取指成功进行了基本的功能仿真进行了综合和实现但是没有完成综合和实现的时序仿真。 下面我们要继续进行其他R型指令的分析这次我们只分析三个移位指令也就是sll srl sra然后改进我们已有的数据通路完成对应的设计。 1 移位指令分析 我们先看看指令编码 instructionoprsrtrdshamtfuncsll00000000000rtrdshamt000000srl00000000000rtrdshamt000010sra00000000000rtrdshamt000011 再看看其功能逻辑 三个指令的逻辑都是一样的 rd - (rt op shamt)op srl: sll: sra: 指令的使用instruction rd,rs,shamt 值得注意的是shamt是5位范围是0~31. 需要的器件和信号 我们依次分析一下完成操作需要改进哪些部件和信号。 很容易知道我们只需要改进一下ALU的输入数据和控制即可同时控制器要识别出这三个指令增加一些相关信号。 ALU 增加shamt的输入移位操作不需要增加之前已经实现过移位操作的输入需要增加选择使得rt和shamt被正确输入为ALU增加控制信号Sftmd表明是这几个移位操作 控制器增加控制信号Sftmd输出到ALU 我们原来的数据通路就变成了 3 ALU和控制器设计改进 3.1 控制器设计 我们把之前的也拿出来同时标出新增内容。 输入信号op func输出信号RegWrite ALUop新增Sftmd instructionopfuncALUopRegWriteSftmd 新增add000000100000000010addu000000100001000110sub000000100010001010subu000000100011001110and000000100100010010or000000100101010110xor000000100110011010nor000000100111011110slt000000101010100010sltu000000101011100110sllv000000101010101010srlv000000000110101110srav000000000111110010新增sll000000000000101011srl000000000010101111sra000000000011110011 3.2 ALU设计 数据输入R[rs] R[rd]新增shamt控制输入ALUop新增Sftmd数据输出R[rd] 特别的当Sftmd 1表明是移位指令的时候ALU增加了多路选择器将sllv等指令的输入由rt和rs变成了rt和shamt。 也就是在rs和shamt之间增加了选择器当Shtmd 1使用shamt作为输入注意需要0扩展为32位进行运算。 注意改了输入输出端口相应的实例也要改。 4 Verilog实现 我们下面改进代码 4.1 Bug修复sllv等指令的ALU错误 设计中发现之前的设计有错误是在移位指令的时候我们先来改正它并且改进我们的测试实例。 以sllv举例它是使用方法是sllv rd,rt,rs逻辑是rd - rt rs。 汇编程序员视角 是正常指令的使用逻辑也是正常的但是内部逻辑却不一样了。 内部逻辑 例如sllv $5,$10,$9功能操作是$5 $10 $9而内部是 rt $10 对应ALU的Brs $9 对应ALU的AALU操作是B A而不是A B 这里之前犯的错误是改变了程序员视角的指令……将上层和底层搞混了…… 4.2 新的ALU timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2020/11/14 22:30:23 // Design Name: // Module Name: ALU_1 // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //module ALU_1(// datainput [31:0] A,input [31:0] B,input [4:0] shamt,// controlinput [3:0] ALUop,input Sftmd, // shift instruction controloutput reg [31:0] ALUresult);// convert A and B to signed numbers wire signed [31:0] A_signed A; wire signed [31:0] B_signed B;// for shift instructions // select data: if (Sftmd 1) input shamt else input rs wire [31:0] A_or_Shift (Sftmd 0) ? A : {27b0,shamt};/* calculate */ always (*) begincase (ALUop)4b0000: // addbeginALUresult A B;end4b0001: // addubeginALUresult A B;end4b0010: // subbeginALUresult A - B;end4b0011: // sububeginALUresult A - B;end4b0100: // andbeginALUresult A B;end4b0101: // orbeginALUresult A | B;end4b0110: // xorbeginALUresult A ^ B;end4b0111: // norbeginALUresult ~(A | B);end4b1000: // slt // note:********signed********//beginif(A_signed B_signed)ALUresult 1;elseALUresult 0;end4b1001: // sltubeginif(A B)ALUresult 1;elseALUresult 0;end4b1010: // sllv 10beginALUresult B A_or_Shift; // NOTE: not A B!end4b1011: // srlvbeginALUresult B A_or_Shift; // NOTE: not A B!end4b1100: // srav // note: ******signed*******//beginALUresult B_signed A_or_Shift; // NOTE: not A_signed B!enddefault:beginALUresult 0;endendcase endendmodule关注移位指令的部分即可同时注意最开始的多路选择器。 4.3 新的control timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2020/11/14 22:30:48 // Design Name: // Module Name: control_1 // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //module control_1(input [5:0] op,input [5:0] func,output reg RegWrite,output reg Sftmd, // indicate the instruction is sll/srl/sraoutput reg [3:0] ALUop);always (*) beginif(op 6b0)begincase (func)6b100000: // addbeginRegWrite 1;Sftmd 0;ALUop 4b0000;end6b100001: // addubeginRegWrite 1;Sftmd 0;ALUop 4b0001;end6b100010: // subbeginRegWrite 1;Sftmd 0;ALUop 4b0010;end6b100011: // sububeginRegWrite 1;Sftmd 0;ALUop 4b0011;end6b100100: // andbeginRegWrite 1;Sftmd 0;ALUop 4b0100;end6b100101: // orbeginRegWrite 1;Sftmd 0;ALUop 4b0101;end6b100110: // xorbeginRegWrite 1;Sftmd 0;ALUop 4b0110;end6b100111: // norbeginRegWrite 1;Sftmd 0;ALUop 4b0111;end6b101010: // sltbeginRegWrite 1;Sftmd 0;ALUop 4b1000;end6b101011: // sltubeginRegWrite 1;Sftmd 0;ALUop 4b1001;end6b000100: // sllvbeginRegWrite 1;Sftmd 0;ALUop 4b1010;end6b000110: // srlvbeginRegWrite 1;Sftmd 0;ALUop 4b1011;end6b000111: // sravbeginRegWrite 1;Sftmd 0;ALUop 4b1100;end6b000000: // sllbeginRegWrite 1;Sftmd 1;ALUop 4b1010;end6b000010: // srlbeginRegWrite 1;Sftmd 1;ALUop 4b1011;end6b000011: // srabeginRegWrite 1;Sftmd 1;ALUop 4b1100;enddefault:beginRegWrite 0;Sftmd 0;ALUop 4b1111;endendcaseendelsebeginRegWrite 0;Sftmd 0;ALUop 4b1111;end endendmodule注意新增的信号。 4.4 新的datapath timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2020/11/27 11:41:34 // Design Name: // Module Name: datapath_1 // Project Name: // Target Devices: // Tool Versions: // Description: 仅仅实现了几个简单的R类指令的最简单的数据通路不与外界交互 // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //module datapath_1(input clk,input rst_n,output [31:0] result // 测试syntheses没有输出的模块是恐怖的);/******** PC ********/// pc_1 Outputs wire [31:0] pcOld;pc_1 u_pc_1 (.clk ( clk ),.rst_n ( rst_n ),.pcNew ( pcOld ), // pcNew pcOld 4; no selection.pcOld ( pcOld ));/******** Instruction ROM ********/// blk_mem_gen_0 Inputs // wire [13:0] addra pcOld[15:2];// blk_mem_gen_0 Outputs // instructions wire [31:0] instruction;blk_mem_gen_0 u_blk_mem_gen_0 (.clka ( clk ),.addra ( pcOld[15:2] ),.douta ( instruction ));/******** Reg Files ********/// reg_files_1 Inputs wire [31:0] ALUresult;/// wire [4:0] rA instruction[25:21]; /// wire [4:0] rB instruction[20:16]; /// wire [4:0] rW instruction[15:11]; /// wire [31:0] writeData ALUresult; wire RegWrite;// reg_files_1 Outputs wire [31:0] A; wire [31:0] B;reg_files_1 u_reg_files_1 (.clk ( clk ),.rst_n ( rst_n ),.rA ( instruction[25:21] ),.rB ( instruction[20:16] ),.rW ( instruction[15:11] ),.writeData ( ALUresult ),.RegWrite ( RegWrite ),.A ( A ),.B ( B ));/******** ALU ********/// ALU_1 Inputs // wire [31:0] A; // wire [31:0] B; wire [3:0] ALUop; wire Sftmd;// ALU_1 OutputsALU_1 u_ALU_1 (.A ( A ),.B ( B ),.shamt ( instruction[10:6]),.ALUop ( ALUop ),.Sftmd ( Sftmd ),.ALUresult ( ALUresult ));/******** controler ********/// control_1 Inputs // wire [5:0] op instruction[31:26]; // wire [5:0] func instruction[5:0];// control_1 Outputs // wire RegWrite // wire [3:0] ALUop;control_1 u_control_1 (.op ( instruction[31:26] ),.func ( instruction[5:0] ),.RegWrite ( RegWrite ),.Sftmd ( Sftmd ),.ALUop ( ALUop ));assign result ALUresult;endmodule注意实例化的时候信号不要弄错。 4.5 旧的测试tb_datapath 激励块内容不变。 4.6 新的测试用例 nop add $1,$2,$3 # $1 2 3 5 addu $2,$4,$1 # $2 4 5 9 sub $4,$2,$1 # $4 9 - 5 4 subu $5,$4,$3 # $5 4 - 3 1and $6,$7,$8 # $6 0111 and 1000 0 or $7,$6,$8 # $7 0 or 1000 8 xor $7,$6,$8 # $7 0000 xor 1000 1000 8 nor $8,$7,$6 # $8 not (1000 or 0) 11111111111110111slt $10,$11,$12 # $10 11 12 1 # 应该用负数验证以后再说 sltu $10,$12,$11 # $10 12 11 0# sllv $12,$5,$13 # $12 1101 1 1101_0 1A 【注意此处的倒置问题 sllv rd,rt,rs】 # srlv $12,$5,$13 # $12 1101 1 110 6 # srav $14,$5,$15 # $14 1111 1 111 7 应该用负数验证以后再说# 上面3条是错误的我们应该改的不是使用而是内部运算逻辑 # 对于使用者来说逻辑就是 $13 $5 # 而实际的编码是 rt $13rs $5这与一般的指令不一样 # 因此我们在ALU运算中 rt--Brs--A应该是 【B A】而不是 A B。 sllv $12,$13,$5 # $12 1101 1 1101_0 1A srlv $12,$13,$5 # $12 1101 1 110 6 srav $14,$15,$5 # $14 1111 1 111 7 应该用负数验证以后再说sll $16,$17,2 # $16 1_0001 2 100_0100 44 srl $16,$18,2 # $16 1_0010 2 0100 4 sra $16,$19,2 # 应该用负数验证以后再说 $16 4特别注意最后移位指令注意注释内容。 指令编码的coe文件 memory_initialization_radix 16; memory_initialization_vector 00000000, 00430820, 00811021, 00412022, 00832823, 00e83024, 00c83825, 00c83826, 00e64027, 016c502a, 018b502b, 00ad6004, 00ad6006, 00af7007, 00118080, 00128082, 00138083;最终测试 经过了每个模块的RTL优化和最终的仿真测试结果没有问题我们又为之前的数据通路增加了新的3个指令Fighting
http://www.yutouwan.com/news/125752/

相关文章:

  • 简述企业网站的建设流程网站找不到首页
  • 报考建设八大员官方网站wordpress更改网站内容
  • 企业网站推广建设python基础教程第三版
  • 庆阳网站优化公司镇江市城市建设投资公司官方网站
  • c语言软件开发和网站开发区别公司网站怎么注销
  • 做网站接广告赚钱吗网站建设与管理基础及实训电子版
  • 做视频网站要什么软件有哪些深圳网站建设服务器
  • 做网站的公司网站没做好找谁投诉北京电商网站建设外包
  • 郑州专业的网站建设公司哪家好wordpress动态文章页模板
  • 做网站下载功能企业标准信息公共服务平台官网
  • 炫酷网站设计网站广告调词平台
  • 广州自助网站推广建站高端食品wordpress
  • 潍坊做公司网站万网做网站多少钱
  • 湖北省建设厅官方网站资料网wordpress+pdo+mysql扩展
  • 莱芜网站制作wordpress清新模板
  • 做ppt图片用的网站网页设计心得体会报告
  • 龙江网站设计制作潍坊高新区建设局网站
  • 湖南建网站公司asp手机网站开发教程
  • 网站建设供需应该选用什么口罩
  • dedecms 网站还原数据之后 乱码旅游网站建设的利益
  • wordpress站点标题副标题换行知名网站排名
  • 最简洁的wordpress主题沙坪坝区优化关键词软件
  • 池州网站开发app类似wordpress
  • 国际时事新闻最新消息宿迁百度seo
  • 深圳网站建设 沙漠风网站设计建设维护与更新
  • 如何做医美机构网站观察分析宁波网络公司排名
  • 文本资料分享网站 建设深圳中心网站建设
  • 网站做外链平台有哪些网站建设经费
  • 网站做的不好会有什么后果淘宝客网站免费做
  • 优猫券网站怎么做wordpress女生主题