2023年7月17日发(作者:)
目录
简介........................................................................................................................ 2
DW8051的特性............................................................................................. 2
软件兼容性.................................................................................................... 2
可配置性........................................................................................................ 2
接口引脚描述........................................................................................................ 3
DW8051的配置..................................................................................................... 6
Dw8051与内存的连接 ......................................................................................... 7
DW8051内存组织架构................................................................................. 7
DW8051与内部RAM的连接....................................................................... 7
DW8051与内部ROM的连接 ...................................................................... 9
DW8051与外部RAM/ROM相连 ............................................................... 10
DW8051与其他IP的连接 ................................................................................. 11
KEIL51的使用指南 .............................................................................................. 12
简介.............................................................................................................. 12
编译.............................................................................................................. 12
仿真调试...................................................................................................... 15
DW8051在Modelsim中的仿真 ........................................................................ 18
Testbench的编写 ........................................................................................ 18
ROM的仿真 ................................................................................................ 18
RAM的仿真................................................................................................. 22
简介
DW8051的特性
DW8051是由Synopsys提供的可综合的微控制器IP核。它与INTEL的标准8051相兼容,采用了新的外部接口,更易于SOC集成。其特性如下:
与标准的51的兼容:
支持标准的51指令集
可选的串口
可选的第三个timer(标准8051为2个)
可选的标准8051的I/O接口
比标准51更高的性能:
1条指令耗费4个时钟周期(标准51为12个时钟周期)
相同频率下,平均速度为标准51的2.5倍
在DC下综合可达250Mhz(需要0.13的工艺)
可配置外部rom的大小
可通过SFR总线连接外部设备IP
16位的外部SFR寻址空间
支持标准的8051的软件开发调试工具。
软件兼容性
DW8051兼容绝大部分标准51软件,但是由于DW8051执行指令的时间与标准51不同,因此使用loop来进行精确延时的程序需要作出修改。
可配置性
中断数量为6个(标准8051)或者13个(与Dallas DS80C320相同)
内部RAM可配置为128 bytes或256 bytes
0-64k bytes 外部rom
0-2个串口
2-3个Timer
接口引脚描述
DW8051采用了与标准8051不同的外部接口,新的接口更利于SOC集成,接口信号如图2.1。
图2.1 DW8051的外部接口
引脚名称
Clk
Por_n
Rst_in_n
Rst_out_n
Stop_mode_n
Idle_mode_n
Test_mode_n
Sfr_addr
Sfr_data_out
Sfr_data_in
Sfr_wr
Sfr_rd
Mem_addr
Mem_data_out
Mem_data_in
Mem_wr_n
Mem_rd_n
Mem_pswr_n
Men_psrd_n
Mem_ale
Mem_ea_n
Iram_addr
Iram_data_in
Iram_data_out
Iram_rd_n
Iram_we1_n
Iram_we2_n
Irom_addr
Irom_data_out
Irom_rd_n
Irom_cs_n
Port_pin_reg_n
P0_mem_reg_
位宽
1
1
1
1
1
1
1
8
8
8
1
1
16
8
8
1
1
1
1
1
1
8
8
8
1
1
1
16
8
1
1
1
1
输入/输出
In
In
In
Out
Out
Out
In
Out
Out
In
Out
Out
Out
Out
In
Out
Out
Out
Out
Out
In
Out
Out
In
Out
Out
Out
Out
In
Out
Out
Out
Out
描述
输入时钟信号,DW8051所有内部寄存器都是下降沿触发
启动reset,低电平有效,至少维持2个时钟周期
标准8051 reset,低电平有效,至少维持8个时钟周期
输出reset信号,为por_n与rst_in_n信号的相与
指示DW8051进入stop模式,只有reset能退出stop模式
指示DW8051进入idle模式,reset或者中断信号可以退出idle模式
进入test模式,通常情况下必须置高
外部设备总线地址
对外部设备数据输出
来自外部设备的数据输入
外部设备总线写指示信号
外部设备总线读指示信号
外部RAM和ROM的地址
对外部RAM的数据输出
来自外部RAM/ROM的数据输入
外部RAM的写指示信号
外部RAM的读指示信号
外部ROM写控制信号,用于对FLASH进行升级
外部ROM读指示信号
内部ROM有效信号,为1则指令从内部ROM开始执行,为0则直接从外部ROM开始执行
内部RAM地址信号
输出到内部RAM数据信号
来自内如RAM的数据信号
内部RAM的读指示信号
内部RAM的写指示信号,为0表示写的地址有效
内部RAM的写指示信号,为0表示写的数据有效
内部ROM的地址信号
来自内部ROM的数据信号
内部ROM的读指示信号,地址直接驱动的ROM则此信号不使用
内部ROM的片选信号,地址直接驱动的ROM则此信号不使用
使用标准8051 I/O接口时的读选择信号,使用SOC接口时此信号不使用
使用标准8051 I/O接口时端口组0输出寄存器和地址/ n
P0_addr_data_n
P2_mem_reg_n
Int0_n
Int1_n
Int2
Int3_n
Int4
Int5_n
Pfi
wdti
T0
T1
T2
T2ex
T0_out
T1_out
T2_out
Rxd0_in
Rxd0_out
Txd0
Rxd1_in
Rxd1_out
Txd1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Out
Out
In
In
In
In
In
In
In
In
In
In
In
In
Out
Out
Out
In
Out
Out
In
Out
Out
数据选择信号,使用SOC接口时此信号不使用
使用标准8051 I/O接口时端口组0的输出地址和输出数据选择信号,使用SOC接口时此信号不使用
使用标准8051 I/O接口时端口组2输出寄存器和地址/数据选择信号,使用SOC接口时此信号不使用
外部中断0,低电平有效,可设置为电平触发或者边沿触发
外部中断1,低电平有效,可设置为电平触发或者边沿触发
外部中断2,高电平有效,边沿触发
外部中断3,低电平有效,边沿触发
外部中断2,高电平有效,边沿触发
外部中断3,低电平有效,边沿触发
Power-fail中断,高电平有效,电平触发
Watchdog-timer中断,高电平有效,边沿触发
定时器0输入
定时器1输入
定时器2输入
定时器2重载输入
定时器0输出
定时器1输出
定时器2输出
串口0输入
串口0输出
串口0输出
串口1输入
串口1输出
串口1输出
DW8051的配置
DW8051可以通过DW8051_parameter.v进行配置,具体的设置如下:
参数 功能 取值范围
Ram_256 内置RAM的大小,0为128 Bytes,0 or 1
1为256 Bytes
Timer2 定时器2是否存在,0为不存在,10 or 1
为存在
Rom_addr_size 内部ROM大小 0-16
Serial 串口数,0为没有串口,1为有一个0,1 or 2
串口,2为有2个串口
Extd_intr 是否使用额外的中断,0为不使用0 or 1
(6个标准中断),1为使用(13个中断)
Dw8051与内存的连接
DW8051内存组织架构
DW8051内存分为ROM和RAM,其中ROM为存储指令,RAM为程序运行过程中存储变量等,RAM/ROM又分为内部与外部。
内部RAM为128/256 Bytes,与CPU通过IRAM总线相连
内部ROM最高支持64K Bytes,与CPU通过IROM总线相连
外部RAM/ROM最高支持64K Bytes,都是通过Mem总线与CPU相连,通过RAM读写控制信号与ROM控制信号不同来区别
具体分布如图2
图2 DW8051的内存分布
DW8051与内部RAM的连接
DW8051同时支持同步和异步RAM,同步RAM是指读写均需要时钟沿触发的RAM,而异步RAM读不需要时钟沿,给出地址后马上可以得到数据,其中与异步RAM的连接如图3。
图3 DW8051与异步RAM的连接
需要注意的是,因为DW8051都是低电平触发,因此输入的CLK信号需要取反
异步RAM的读写时序如图4
图4 异步RAM的读写时序
同步RAM的连接如图5
图5 同步RAM与DW8051的连接
同样需要注意的是,ram的we接口连接的是WE2信号而不是WE1信号,并且CLK信号和WE2信号都需要取反,否则CPU会读取错误
同步RAM的读写时序图6
图6 同步RAM的读写时序
DW8051与内部ROM的连接
DW8051与内部ROM的连接与内部RAM相似,具体时序如下:
图7 与内部ROM相连
DW8051与外部RAM/ROM相连
DW8051与外部RAM/ROM都是通过MEM总线相连,因此如果同时使用外部ROM/RAM,则应使用解码器来判断访问的是RAM还是ROM,如图8
图8 DW8051与外部ROM/RAM的连接
DW8051与其他IP的连接
DW8051与其他的IP通过SFR总线连接,sfr总线有8位的地址空间,但是其中一部分被DW8051内部的模块如定时器,串口等占据,可供用户定义使用的如图9
图9 可供用户使用的SFR地址
DW8051与外部IP的连接如图10
图10 DW8051与外部IP的连接
KEIL51的使用指南
简介
KEIL51是针对8051的集成开发环境,包括了编译器,调试器和仿真器,支持C语言和51汇编语言,目前使用的是Uvision3 的版本。
编译
安装完成后,选择New Project新建工程项目。
在处理器选择时,选择DW8051
双击左边的项目名称,可向其中添加源程序代码(C语言或者汇编程序)
在选项中,可以对编译选项进行具体的设置
选择“option for target”
Xtal为仿真的频率,只是仿真的时候使用,具体硬件实现时没有影响
Memory Model根据需要选择,samll 只使用内置ram存放变量,但是速度较快,compact和Large使用外部ram存放变量,但是速度较慢,根据程序不同,如果变量较多而使用small模式的话编译时会提示错误,这时需要将其设置为Large模式编译。
在output选项中,注意将create hex file选项打上勾,这样编译后会产生.hex文件,供仿真使用。
仿真调试
选择start debug进入调试环境
左边的reg可以看到所有内部寄存器的值
点击左上角按钮可以进行单步连续等运行
此按钮可以查看编译后的汇编代码
Symbels窗口可以查看各个函数和变量的信息
此按钮可以打开串口仿真窗口
printf函数在51上是通过串口实现的,所有打印的东西都通过串口发送,因此在testbench里需要将TI寄存器置一,然后可以再serial窗口中查看打印的数据。
DW8051在Modelsim中的仿真
Testbench的编写
DW8051以verilog代码的形式存在,其顶层文件和模块为DW8051_core,在testbench中引用这个模块,并将它与ram和rom相连,其中需要一些不用的信号需要置为0或者1,如中断信号,不要空着,否则仿真可能出错。
ROM的仿真
由于KEIL生成的机器码是以.hex文件存在的,在仿真中不能直接读取,因此需要采用一定的方法,使得仿真软件可以读取hex文件
有两种方法可以读取hex,一种是使用altera的插件,并使用altera的工具生成rom,在装有quartus的机器上,这种方法比较简单易行。并且可以直接在FPGA硬件上调试
第二种是采用一段verilog程序将.hex中的数据读入到寄存器堆中,用寄存器来仿真ram,这种方法在没有quartus的机器上可以用于仿真,但是不能在硬件上实现。
采用quartus的方法如下:
在quartus中选择megawizard plug-in manager
选择Memory complier中选择ram或者rom
点击next可以对rom和ram进行设置,其中第三步就是用hex文件对rom/ram进行初始化。
用quartus生成rom/ram之后,还不能直接在仿真软件中运行,必须将220model.v, altera_mf.v , altera_primitives.v 三个文件加入到仿真软件的项目中一同编译,RAM/ROM才能正常初始化和使用。
采用testbench直接用寄存器仿真ram的程序如下,直接粘贴到testbench中即可使用:
parameter romname="";
reg[7:0] column_rom;
reg[15:0] address_rom;
reg [7:0] len_rom;
reg[7:0] dat_rom;
reg[7:0] sum_rom;
reg[500*8:1] noused_rom;
reg[640:1] errstr_rom;
reg[7:0] rom_contain[0:479232-1];
integer i_rom,fd_rom,code_rom;
integer i;
initial begin
for(i=0;i<500;i=i+1)
rom_contain[i]=0;
end
initial
begin : continue
fd_rom=$fopen(romname,"r");
if(fd_rom==0) $stop;
forever begin
code_rom=$fscanf(fd_rom,"%2x",len_rom);
if(len_rom==0)
begin
disable continue;
end
sum_rom=len_rom;
code_rom=$fscanf(fd_rom,"%4x",address_rom);
sum_rom=sum_rom+address_rom;
sum_rom=sum_rom+(address_rom>>8);
code_rom=$fscanf(fd_rom,"%2x",dat_rom);
sum_rom=sum_rom+dat_rom;
for(i_rom=0;i_rom code_rom=$fscanf(fd_rom,"%2x",dat_rom); sum_rom=sum_rom+dat_rom; rom_contain[address_rom]=dat_rom; address_rom=address_rom+1; end code_rom=$fscanf(fd_rom,"%2xn",dat_rom); sum_rom=sum_rom+dat_rom; end 此段程序生成了名为rom_contain的8位寄存器堆来仿真ram/rom,在使用时直接用以下语句 reg [31:0] rom_data; always @ ( clk or negedge reset ) if(~reset) rom_data<=32'b0; else rom_data <= rom_contain[address] 就可将数据读出 RAM的仿真 RAM的仿真与ROM相似,也可以用altera的工具生成和使用寄存器堆来模拟,并且不需要赋予初值,具体不再详述,可按照上述ROM的生成办法来完成。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689550434a265384.html
评论列表(0条)