使用DesignStart eval搭建SoC(1)——Cortex-M0在顶层文件的配置
写在前面
这个系列用来记录使用DesignStart计划搭建Soc的过程,希望不管多困难都能成功吧,加油(? ?_?)?以下内容都是各路搜刮来的,如果有侵权私聊我马上删,内容也希望大家多多批评指正。
DesignStart eval介绍
ARM通过DesignStart开放了一系列的IP,eval版本提供了处理器核网表形式的Verilog代码,可以直接从官网上面下载,不需要License。
ARM缩略语
首次接触ARM,在查看手册的过程中对好多缩写都不太了解,总结了一些常见的。
AHB:先进高性能总线 APB:先进外设总线 FPB:闪存地址重载及断点 MPU:存储器保护单元 ITM:仪器化跟踪宏单元 ETM:嵌入式跟踪宏单元 WIC:唤醒中断控制器 TCM:高速缓存,被直接集成在CPU芯片中。 DS有两种TCM,分别是ITCM(instruction)和DTCM(data)。ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线结构概览
Cortex-M0 核在顶层文件的配置
cortexm0ds_logic.v 就是处理器核的网表形式verilog代码,具体路径看下面
.\cores\cortexm0_designstart_r2p0\logical\cortexm0_integration\verilog
下面介绍端口信号的含义
时钟与复位信号
.FCLK (clk),
.SCLK (clk),
.HCLK (clk),
.DCLK (clk),
这四个时钟都连接到同一个外部时钟上
.PORESETn (RSTn),
.DBGRESETn (RSTn),
这两个复位与外部的复位接在一起
.HRESETn (cpuresetn),
wire SYSRESETREQ;
reg cpuresetn;
always @(posedge clk or negedge RSTn)begin
if (~RSTn) cpuresetn <= 1'b0;
else if (SYSRESETREQ) cpuresetn <= 1'b0;
else cpuresetn <= 1'b1;
end
这个时钟与系统的复位请求SYSRESETREQ有关,需要做相应处理
调试信号
.nTRST (1'b1),
.SWDITMS (SWDI),
.SWCLKTCK (SWCLK),
.TDI (1'b0),
.SWDO (SWDO),
.SWDOEN (SWDOEN),
采用的是SWD的调试方式,只需要SWCLK和SWDO两根线。 SWCLK是调试器的时钟信号可以直接引出,SWDO双向输出口。 注意 Xilinx的双向引脚不能直接使用需要创建IOBUF(使用原语IOBUF来创建) SWDITMS应该是SWDI/TMS TMS是给JTAG口使用的
AHB总线信号
.HADDR (HADDR[31:0]),
.HTRANS (HTRANS[1:0]),
.HSIZE (HSIZE[2:0]),
.HBURST (HBURST[2:0]),
.HPROT (HPROT[3:0]),
.HMASTER (HMASTER),
.HMASTLOCK (HMASTLOCK),
.HWRITE (HWRITE),
.HWDATA (HWDATA[31:0]),
.HRDATA (HRDATA[31:0]),
.HREADY (HREADY),
.HRESP (HRESP),
其中只有后面的来源是slave,其他来源是master。
中断
.IRQ (IRQ),
.NMI (1'b0),
.IRQLATENCY (8'h0),
.ECOREVNUM (28'h0),
因为没有不可屏蔽中断,所以直接讲NMI置为0
关键信号就是这样,其他没有到的信号直接粗暴地置为0值或者常数
最近学习的一些感想
拿到老师给的题目真的不知道从何下手,后面从各方面搜集资料,感谢dalao分享的开源工程5555真的要自己把工程编译成功一遍,通过看原理图直观地感受每一个端口地连接,这样才能够体会端口的意义。 工具书应该有问题的时候查漏补缺,前几天还想把微机原理重新读一遍😓
|