CrazyBingo

Chapter 04:要玩国产FPGA,先搞定8051 ip core

0
阅读(24525)

要玩国产FPGA,先搞定8051 ip core

wps_clip_image-76

8051 ip core以及相关资料下载地址:http://www.chinaaet.com/lib/detail.aspx?id=89010

要玩国产FPGA,先搞定8051 ip core 1

一、8051 ip core的基本介绍 1

1. 8051 ip core 特性 1

2. 8051 ip core 结构 2

3. 8051 ip core 信号定义 3

4. 8051 ip core rtl架构 3

5. 8051 ip core I/O port 5

6. 8051 ip core注意事项 5

二、8051 ip core的应用范例 5

1. 知己知彼,了解8051 ipcore 5

2. 配置寄存器 6

3. 配置Memory 6

4. 综合8051 ipcore block 6

5. 配置引脚 7

6. 编写单片机程序 7

7. 设定51 ROM的HEX 8

8. Quartus II编译综合,下载验证 8

三、8051 ip core与Astro ii的血缘 9

一、8051 ip core的基本介绍

1. 8051 ip core 特性

1) 可选的1-4个时钟周期

2) 可选的units(256个以内,相关配置可在c8051_p_p.vhd修改参数)

a) Alu(累加器)

b) Multiplier(乘法器)

c) Divider(除法器)

d) Decimal correction(十进制校正)

e) Timer/counter(定时器/计数器)

f) Serial interface(串行接口)

g) External interrupt(外部中断)

3) 结构上与工业标准的8051 微处理器兼容,速度上提升了10倍

4) 256 bytes的内部RAM,最大可配置64Kbytes的RAM,ROM

2. 8051 ip core 结构

wps_clip_image-8095

3. 8051 ip core 信号定义

wps_clip_image-26193

4. 8051 ip core rtl架构

wps_clip_image-12201

Quartus II 编译综合的RTL图如下所示,

wps_clip_image-6413

可见8051 ip core,大体上有core,rom,以及内部,外部RAM组成

wps_clip_image-29577

继续分析底层电路,清晰可见ip core大体由算法、移位寄存器、中断定时器,内核控制中心组成。

5. 8051 ip core I/O port

wps_clip_image-11084

6. 8051 ip core注意事项

1) 8051 ip core 异步复位信号低的时候有效,而FPGA一般logic低复位,因此可加一反相器

2) Rom,ram,ramx可以再block中修改存储深度,以便节省资源

3) Clk

二、8051 ip core的应用范例

1. 知己知彼,了解8051 ipcore

仔细阅读Mc8051_user_guide.pdf,了解Oregano的8051 ip core,分析此内核的架构以及基本组成部分。Orerano公司的8051 ipcore比较灵活,而且比较强大,少说也有万把的代码,而且vhdl应用自如,虽说放弃vhdl很久很久,但还是膜拜。代码写很严谨,而且很巧妙,编译了一下,除了可以忽略的,上万行代码0个警告:

wps_clip_image-19667

wps_clip_image-29305 我看了大半个白天,总算一知半解的懂得了怎么使用,恐日后有用,测试一下。

2. 配置寄存器

参照Oregano Syetem的8051 ip core,分析vhdl代码,修改mc8051_p.vhd配置一个最为简单的8051ip core如下:

1) 8位8051 ip core

2) 1个乘法器

3) 1个除法器

4) 1个10进制校准器

5) 1个定时/计数器

6) 1个串行移位器

7) 两个中断

3. 配置Memory

此core能支持最大256 bytes的内部ram,最大64k的内部rom以及外部ram,本例程中配置了64byte的内部ram,以及256byte的内部rom以及外部ram。

4. 综合8051 ipcore block

因为ipcore模块比较多,为了便于修改,看的更加明了,可以子啊block中设计。本例利用P1设计流水灯,来验证8051ipcore,如下所示

wps_clip_image-29894

5. 配置引脚

由于ipcore所占资源比较多,综合会发费很大的工程,因此为了节约时间,可以用tcl来配置引脚,如下:

set_location_assignment PIN_Y18 -to led_data[7]

set_location_assignment PIN_AA20 -to led_data[6]

set_location_assignment PIN_U17 -to led_data[5]

set_location_assignment PIN_U18 -to led_data[4]

set_location_assignment PIN_V18 -to led_data[3]

set_location_assignment PIN_W19 -to led_data[2]

set_location_assignment PIN_AF22 -to led_data[1]

set_location_assignment PIN_AE22 -to led_data[0]

set_location_assignment PIN_N2 -to clk

set_location_assignment PIN_N25 -to rst_n

6. 编写单片机程序

在Keil C51中建立K80C51的工程,正如一般的51单片机一样,设计一个简单的流水灯程序,并且声称hex,代码如下所示:

void delay_1s()

{

unsigned int j;

unsigned int i = 0xfff;

while(i--)

{

j = 0x30;

while(j--);

}

}

main()

{

unsigned char  i ;

while(1)

{

P1 = i++;

delay_1s();

}

}

7. 设定51 ROM的HEX

谁都知道单片机设计时,要下载声称的hex到ROM中,而在基于FPGA的8051IP中,直接在ROM中设计,映射keil声称的hex即可。ROM作为HEX的存档区,如下所示:

wps_clip_image-7768

8. Quartus II编译综合,下载验证

如果能安装上诉步骤,又保证在设计中不出错误,可以保证一次综合,直接下载验证。尽量减少综合的时间,正如sopc一样,给开发大大节省时间。

此时若出错了,再次修改代码,也可以看RTL了,做好一切准备,让开发变得更明了。

Keil+Quartus II 联调,一次下载成功,看到了漂亮的流水灯,效果如下所示,强大的51内核到手了哈。(直接行了,都没感觉~~~~(>_<)~~~~ )

wps_clip_image-12709

三、Oregano 8051 ip core与Agate Logic Astro ii的血缘

8051 ip core已经无需多言,且看Astro II的内部架构,多了I2C,SPI,UART等,其他雷同。可见了解了8051内核,自己走过一遍流程,对于Astro ii内部架构的了解,对于此款芯片的使用开发,无疑明了了很多。倘若你写的8051 ip core相当完美,再写一个usb下载hex的接口,也许可以与astro ii媲美了!O(∩_∩)O哈哈~

wps_clip_image-9059