FPGA实例-使用函数实现简单的处理器

目录

一.实例的内容

二.实例目标


一.实例的内容

使用Verilog HDL设计一个简单8位处理器,可以实现两个8位操作数的4种操作。在设计的过程中,使用了函数调用的设计方法。

二.实例目标

  • 掌握使用Verilog函数设计的方法
  • 张伟Verilog设计的一般方法

1.原理简介

实现的处理器是一个8位处理器,只实现简单的4中操作:相加、相减、操作数减1和操作数加1。

2.代码分析

如下所示的简单处理器的代码:

module    mpc(instr,out);


//端口声明
input    [17:0] instr;    //输入指令
output    [8:0] out;        //输出结果

//内部信号声明
reg    [8:0] out;
reg func;            //指令中提取出的操作码的内部变量
reg    [7:0] op1,op2;    //从指令中提取的两个操作数

//函数声明
function    [16:0] code_add;    //函数的定义,返回一个17位的指令
    input    [17:0] instr;    //函数输入,采用与模块输入同样的命令,可不同函数内部信号说明
    reg    add_func;            //函数内部的操作码变量
    reg    [2:0] code;        //操作码
    reg    [7:0] opr1,opr2;   //两个操作数

    begin
        code = [17:16]; //输入指令instr的高2位为操作码code
        opr1 = instr[7:0]; //输入指令instr的低8位操作数为opr1
//通过case语句判断操作码的类型,获得操作数opr2
        case(code)
            2'b00:
                begin
                    add_func = 1;
                    opr2 = instr[15:8]; //从instr中取第二个操作数
                end

            2'b01:
                begin
                    add_func = 0;
                    opr2 = instr[15:8]; //从instr中取第二个操作数
                end

            2'b10:
                begin
                    add_func = 1;
                    opr2 = 8'd1;  //第二个操作数取为1,实现+1
                end

            2'b11:
                begin
                    add_func = 0;
                    opr2 = 8'd1;  //实现-1操作
                end
        endcase
        code_add = {add_func,opr2,opr1}; //函数的返回值
    end

endfunction

//函数调用模块
always @(instr)
    begin
        {func,op2,op1} = code_add(instr); //调用函数
        if(func==1)
            begin
                out = op1 + op2; //实现两数相加或操作数1加1操作
            end
        else
            begin
                out = op1 - op2; //实现两数相减或操作数1减1操作
            end
    end
endmodule

这样就简单的实现了8位处理器进行4中操作的功能。可以添加其它的相关功能。

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值