这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » verilog hdl 的疑问

共1条 1/1 1 跳转至

verilog hdl 的疑问

菜鸟
2015-09-23 14:46:32     打赏
有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里,该怎样做?


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]