微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog hdl 的疑问

verilog hdl 的疑问

时间:10-02 整理:3721RD 点击:
有2个文件
pc.v    : 读指令
id.v    : 译码
pineline    :流水线控制

id.v
{
    ...
    //当前读取的4字节指令
    input    wire[31:0]    inst;     
     
    //流水线控制标志            
    input    wire[8:0]     flg_pineline;     
    ...
     
    //------------------------------------
    //以下用c表达
    //当前指令,假设指令最大长度 12*4=48字节
    unsiged char * cur_pc        = malloc(48);
     
    //下一条指令,假设指令最大长度 12*4=48字节         
    unsiged char * next_pc    = malloc(48);     
     
    //全局变量,如果一条指令读取完成
    //如果10字节的指令,要分3次,
    //期间每次都是 false,最后完成是 true     
    flg_inst_complete;     
     
    //指令总长度            
    inst_tot_len;                             
     
    //本次读取指令的长度(如:10自己指令,
    //前2次为4字节,最后一次读取的指令
    //长度为2字节,另外2字节为下一指令的)
    inst_cur_len;     
                             
    //指令剩余长度
    inst_left_len;
     
    //cur_pc[cur_pos]                        
    int cur_pos    ;                             
     
    ........
    译码分析
    .........
     
    //最后
    for(i=inst_cur_len;i>0; i--)
    {
        cur_pc[cur_pos]    = inst[i];
        cur_pos++;
    }
     
    //读取12字节,有10字节是当前指令,
    //2字节为下一条指令     
    if(flg_inst_complete == true)
    {
        cur_pos = 0;
         
        for(i=(32 - inst_cur_len);i>0; i--)
        {
            next_pc[cur_pos]    = inst[i];
            cur_pos++;
        }
    }
    //-----------------------------------
}

问题:
1)以上c逻辑如果用 verilog hdl 表达,该如何写?
2)全局变量的初始值(flg_inst_complete=true,
    inst_len_dword_cnt=0)该怎样赋值?
    在c里简单,main函数里赋值即可;
    但在verilog hdl里,该怎样做?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top