完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
有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里,该怎样做? |
|
相关推荐
2个回答
|
|
c是顺序执行,v是并行执行,而且你要定义寄存器类型,这个在v里面就是组合逻辑,但是v最适合的是做时序的
|
|
|
|
1) 先將你的Loop內的程序拆解成組合邏輯和序向邏輯,通常加算移位的部分是組合,邏輯式是序向,須配合FSM,建立你的邏輯狀態
2) 用FSM轉態時候就可以賦予值,注意建立FSM是很重要的過程,確保你時序正確 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求FPGA 驱动控制ltc2271 或者 ltc2180 或者 ltc2190或者 ltc2202 的代码
1241 浏览 0 评论
399 浏览 0 评论
求助:遇见诡异问题,FPGA模块A输出端口连接模块B输入后,模块A不能正常工作的
1395 浏览 1 评论
456 浏览 0 评论
1345 浏览 1 评论
4235 浏览 94 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-14 15:20 , Processed in 0.626632 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191