FPGA RTL综合中MG的设计与实现的中期报告.docx
上传人:快乐****蜜蜂 上传时间:2024-09-13 格式:DOCX 页数:6 大小:11KB 金币:5 举报 版权申诉
预览加载中,请您耐心等待几秒...

FPGA RTL综合中MG的设计与实现的中期报告.docx

FPGARTL综合中MG的设计与实现的中期报告.docx

预览

在线预览结束,喜欢就下载吧,查找使用更方便

5 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

FPGARTL综合中MG的设计与实现的中期报告一、综述本报告介绍了MG(MarsRoverGuidance)模块的FPGARTL综合的设计与实现。MG模块是控制火星车的关键模块,需要在硬件上实现高可靠性和高性能。本报告将介绍MG模块的设计思路、RTL代码实现、综合结果和后续工作计划。二、设计思路MG模块主要负责实现以下功能:1.从其他模块接收指令并解析成驾驶命令。2.在指定区域内搜索目标并跟踪,保持距离和角度。3.根据地形和障碍物情况更新路径。4.控制火星车完成导航任务。为了实现这些功能,我们采用了以下设计思路:1.模块采用基于状态机和数据通路的模块化设计方法,简化实现复杂功能。2.MG模块的功能被划分为五个子模块:状态控制、接收指令、目标搜索、路径更新和运动控制。3.采用HDL(硬件描述语言)描述电路,并通过综合工具自动生成逻辑网表。三、RTL代码实现MG模块被实现为一个状态机,在状态机的每个状态中,会执行某种操作,然后进入下一个状态。在实现过程中,我们使用了VerilogHDL描述电路,以下是实现的主要代码:```moduleMG(inputwireclk,rst,inputwire[31:0]cmd,outputwire[31:0]motion);enumState{STATE_IDLE,STATE_RECEIVE_CMD,STATE_SEARCH,STATE_UPDATE_PATH,STATE_CONTROL};reg[2:0]state=State.STATE_IDLE;reg[31:0]current_pos;reg[31:0]target_pos;reg[31:0]path[100];wirepath_valid;//接收指令模块receive_cmdrc(.clk(clk),.rst(rst),.cmd(cmd),.valid(valid),.drive_cmd(drive_cmd));//目标搜索模块search_targetst(.clk(clk),.rst(rst),.current_pos(current_pos),.target_pos(target_pos),.valid(valid),.motion(motion));//路径更新模块update_pathup(.clk(clk),.rst(rst),.current_pos(current_pos),.path_valid(path_valid),.path(path),.target_pos(target_pos));//运动控制模块control_motioncm(.clk(clk),.rst(rst),.motion(motion),.path_valid(path_valid),.path(path),.current_pos(current_pos),.drive_cmd(drive_cmd));always@(posedgeclk)beginif(rst)beginstate<=State.STATE_IDLE;endelsebegincase(state)State.STATE_IDLE:beginif(cmd_valid)beginstate<=State.STATE_RECEIVE_CMD;endendState.STATE_RECEIVE_CMD:beginif(rc.valid)begincurrent_pos<=rc.current;//获取当前位置target_pos<=rc.target;//获取目标位置state<=State.STATE_SEARCH;endendState.STATE_SEARCH:beginif(st.valid)beginmotion<=st.motion;//发送驾驶指令path_valid<=st.path_valid;//收到新路径state<=State.STATE_UPDATE_PATH;endendState.STATE_UPDATE_PATH:beginif(up.path_valid)beginstate<=State.STATE_CONTROL;endendState.STATE_CONTROL:beginif(cm.done)begin//完成导航任务state<=State.STATE_IDLE;endendendcaseendendendmodule```四、综合结果我们使用XilinxVivado工具将MG模块的代码进行RTL综合,并得到了以下结果:|