Xilinx可编程逻辑器件设计与开发(基础篇)连载50:Spartan_第1页
Xilinx可编程逻辑器件设计与开发(基础篇)连载50:Spartan_第2页
Xilinx可编程逻辑器件设计与开发(基础篇)连载50:Spartan_第3页
Xilinx可编程逻辑器件设计与开发(基础篇)连载50:Spartan_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Xilinx可编程逻辑器件设计与开发(基础篇)连载50:Spartan12.7PicoBlaze设计实例一、设计要求1.PICOBLAZE嵌入式系统,包括1个8位的方波输出口,一个驱动两位7段LED的输出口,一个时钟输入和一个中断输入。

2.在Spartan-3anstarter套件中实现。二、设计过程1.在ISE11.x中建立一个新的项目,项目名为kcpsm3_int_test,并加入源文件kcpsm3.vhd,这仅仅是一个PicoBlaze控制器核文件,读者可以根据自己的爱好选择不同的设计语言。2.编写PicoBlaze的汇编语言源程序,本例中的汇编源程序为int_test.psm,具体如下。;Interruptexample

;

CONSTANTwaveform_port,02;定义方波输出端口ID为02

CONSTANTcounter_port,04;定义中断计数器输出端口ID为04

CONSTANTsel_port,08;定义2位7段LED选择输出端口ID为08

CONSTANTpattern_10101010,AA;定义方波输出口初始值

CONSTANTini_sel,01;定义2位7段LED位选初始值为01

NAMEREGsA,interrupt_counter;将sA寄存重新命名为interrupt_counter

;

start:LOADinterrupt_counter,00;中断计数寄存器清零

LOADs2,pattern_10101010;将方波数据载入寄存器s2中

LOADsD,ini_sel;将位选值装载入寄存器sD中

ENABLEINTERRUPT;使能中断

;

drive_wave:OUTPUTs2,waveform_port;输出方波

OUTPUTsD,sel_port;输出LED位选

LOADs0,FF;延时

loop3:LOADs1,FF

loop4:SUBs1,01

ADDs1,01

SUBs1,01

JUMPNZ,loop4

SUBs0,01

JUMPNZ,loop3

XORs2,FF;方波值取反

XORsD,FF;位选值取反

JUMPdrive_wave

;

ADDRESS2B0;定义程序存储地址

int_routine:ADDinterrupt_counter,01;中断计数器加1

OUTPUTinterrupt_counter,counter_port;输出计数值

OUTPUTsD,sel_port;输出位选

LOADsF,FF;延时

loop1:LOADsE,FF

loop2:SUBsE,01

ADDsE,01

SUBsE,01

JUMPNZ,loop2

SUBsF,01

JUMPNZ,loop1

XORsD,FF

RETURNIENABLE;中断返回

;

ADDRESS3FF;中断入口地址

JUMPint_routine

3.将int_test.psm文件拷贝到Assembler目录下,运行DOS命令,进入

Assembler目录,运行如下命令:

kcpsm3int_test.psm>screen回车编译后Assembler目录中产生了一些新的文件,如图12-30所示。其中INT_TEST.VHD/INT_TEST.V文件为我们需要的文件,它就是PicoBlaze的程序存储器文件,将它加入到kcpsm3_int_test项目中。可以看到,生成的PROM文件名与汇编源程序的文件名相同。图12-30编译后Assembler目录文件其中screen文件为一个文本文件,编译过程记录在此文件中,如果源文件有错误,错误信息会在此文件中找到。4.建立一个顶层文件。在顶层文件中完成PROM文件以及PicoBlaze核文件的连接。下面对顶层文件进行简要说明。

例化kcpsm3和INT_TEST。

初始化未用的PicoBlaze输入引脚in_port和reset。

扩展输出寄存器,分别是waveforms、counter和sel,其端口ID分别为0x02、0x04和0x08。

中断输入逻辑。

将计数器的结果译码为7段LED的输入编码。顶层文件源代码如下。

--

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;--

-------------------------------------------------------------------------

entitykcpsm3_int_testis

Port(LED:outstd_logic_vector(6downto0);

waveforms:outstd_logic_vector(7downto0);

interrupt_event:instd_logic;

clk:instd_logic;

selp:outstd_logic);

endkcpsm3_int_test;

-------------------------------------------------------------------------

architectureBehavioralofkcpsm3_int_testis

--

componentkcpsm3

Port(address:outstd_logic_vector(9downto0);

instruction:instd_logic_vector(17downto0);

port_id:outstd_logic_vector(7downto0);

write_strobe:outstd_logic;

out_port:outstd_logic_vector(7downto0);

read_strobe:outstd_logic;

in_port:instd_logic_vector(7downto0);

interrupt:instd_logic;

interrupt_ack:outstd_logic;

reset:instd_logic;

clk:instd_logic);

endcomponent;

--

componentint_test

Port(address:instd_logic_vector(9downto0);

instruction:outstd_logic_vector(17downto0);

clk:instd_logic);

endcomponent;

--

-------------------------------------------------------------------------

signaladdress:std_logic_vector(9downto0);

signalinstruction:std_logic_vector(17downto0);

signal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论