跑丢的孩子

【赛灵思FPGA】零基础学习PicoBlaze

0
阅读(3927)

Lab1入门例程

1新建立一个工程

1.1开始→所有程序Xilinx ISE Design Suite 13.2→ISE Design Tools→

Project Navigator(相信这一步大家都会做,这里不再赘述);

1.2ProjectNew Source新建一个VHDL顶层模块top

注意:这里先不添加任何端口

2KCPSM6添加到你的设计中

2.1解压KCPSM6_Release4_30April12.rar,找到kcpsm6_design_template.vhd文件,这个文件包含了KCPSM6的例化和声明语句,方便用户使用;

2.2复制KCPSM6声明语句到你的设计中(说穿了,KCPSM6和其他硬件模块没什么区别,操作方式雷同);

2.3为了例化KCPSM6,必须声明一些信号,而这些冗繁的工作也不需要你去做了。回到上一步中提到的VHD文件,找到信号定义语句,将其复制到你的设计中;

2.4复制KCPSM6例化语句到你的设计中,方法如前;

2.5复制声明和例化语句到你的设计中,方法如同KCPSM6

2.6这只是一个简单的入门实例,我们不需要使用中断和睡眠模式,所以我们还要添加两条语句:kcpsm6_sleep <= '0';interrupt <= '0';

注意:参数映射时,注意一下C_FAMILY的设置。这个参数取决于你手中板卡的芯片型号。选择标准参照表2-1

2-1

Spartan-6

Virtex-6

7-Series

S6

V6

7S

完成上述步骤后,整个硬件就搭建起来了,如下图所示:

3编写汇编文件

3.1下载编辑软件WordPadNotePad并安装到你的PC机上;

3.2编写如下汇编代码,保存时一定是以psm为后缀名,文件名暂定为test1,读者可根据自己的喜好取名;

;8LED

constant led_port,01

;8DIP开关

constant dip_port,01

start:input s0,dip_port

output s0,led_port

jump start

这是一段简单的汇编程序,实现的功能是:读取8DIP开关的状态,然后把值赋给相应的LED

3.3从解压文件里把kcpsm6.exeROM_form.vhd复制到你的工作文件夹里,也包括你的psm文件;

3.4双击kcpsm6.exe图标,并输入你的psm文件的名字;

3.5回车,汇编器开始工作,整个汇编过程非常快。如果编写的程序没有错误的话,它会显示汇编成功信息,否则,会报告错误;

3.6添加kcpsm6.vhdyour_program.vhd文件到你的ISE工程中(你懂得啊,注意your_program.vhd这个文件是汇编器产生的文件);

4添加I/O端口(现在你的设计已经包含了KCPSM6和程序存储器,但是并没有和FPGA管脚关联起来)

4.1添加输出端口

4.1.1 将下列代码复制到你的顶层文件中;

output_ports: process(clk)

begin

if clk'event and clk = '1' then

-- 'write_strobe' is used to qualify all writes to general output ports.

if write_strobe = '1' then

-- Write to output_port_w at port address 01 hex

if port_id(0) = '1' then

led <= out_port;

end if;

end if;

end if;

end process output_ports;

4.2添加输入端口

4.2.1 将下列代码复制到你的顶层文件中;

input_ports: process(clk)

begin

if clk'event and clk = '1' then

if port_id(0) = '1' then

in_port <= dip;

end if;

end if;

end process input_ports;

注意:敏感事件列表中的clk信号必须和KCPSM6的时钟信号一致!

4.3添加实体端口;

5添加管脚约束文件,综合、实现、产生位流文件、下载,相信面前的读者比我还熟练,这里就不在各位面前卖弄了。实验现象如下图所示:

恭喜你!完成了第一个PicoBlaze实验。

Baidu
map