【赛灵思FPGA】零基础学习PicoBlaze
0赞
Lab1入门例程
1新建立一个工程
1.1开始→所有程序→Xilinx ISE Design Suite 13.2→ISE Design Tools→
Project Navigator(相信这一步大家都会做,这里不再赘述);
1.2Project→New Source新建一个VHDL顶层模块top;
注意:这里先不添加任何端口
2将KCPSM6添加到你的设计中
2.1解压KCPSM6_Release4_30April12.rar,找到kcpsm6_design_template.vhd文件,这个文件包含了KCPSM6的例化和声明语句,方便用户使用;
2.2复制KCPSM6声明语句到你的设计中(说穿了,KCPSM6和其他硬件模块没什么区别,操作方式雷同);
2.3为了例化KCPSM6,必须声明一些信号,而这些冗繁的工作也不需要你去做了。回到上一步中提到的VHD文件,找到信号定义语句,将其复制到你的设计中;
2.4复制KCPSM6例化语句到你的设计中,方法如前;
2.5复制
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下载编辑软件WordPad或NotePad并安装到你的PC机上;
3.2编写如下汇编代码,保存时一定是以psm为后缀名,文件名暂定为test1,读者可根据自己的喜好取名;
;8个LED
constant led_port,01
;8个DIP开关
constant dip_port,01
start:input s0,dip_port
output s0,led_port
jump start
这是一段简单的汇编程序,实现的功能是:读取8位DIP开关的状态,然后把值赋给相应的LED。
3.3从解压文件里把kcpsm6.exe和ROM_form.vhd复制到你的工作文件夹里,也包括你的psm文件;
3.4双击kcpsm6.exe图标,并输入你的psm文件的名字;
3.5回车,汇编器开始工作,整个汇编过程非常快。如果编写的程序没有错误的话,它会显示汇编成功信息,否则,会报告错误;
3.6添加kcpsm6.vhd和your_program.vhd文件到你的ISE工程中(你懂得啊,注意your_program.vhd这个文件是汇编器产生的文件);
4.1添加输出端口
output_ports: process(clk)
begin
if write_strobe = '1' then
if port_id(0) = '1' then
led <= out_port;
end if;
end if;
end if;
4.2添加输入端口
input_ports: process(clk)
begin
if clk'event and clk = '1' then
in_port <= dip;
end if;
注意:敏感事件列表中的clk信号必须和KCPSM6的时钟信号一致!
4.3添加实体端口;
5添加管脚约束文件,综合、实现、产生位流文件、下载,相信面前的读者比我还熟练,这里就不在各位面前卖弄了。实验现象如下图所示:
恭喜你!完成了第一个PicoBlaze实验。