altera FPGA学习日记

1、Warning: Found 1 output pins without output pin load capacitanceassignment

       输出端口没有接负载电容

       解决方案:assignment->device->deviceand pin options->capacitive loading->3.3V-LVTTL

 

 

3、原理图文件.bdf不能直接调用modelsim进行仿真,需要将原理图文件Verilog(.v)文件之后再进行仿真。

       流程:(1)先转化文件类型file->create/update->create HDL design file from current file

            (2)project->add/removefiles in project将bdf文件删除,添加.v文件

            (3)重新编译,并进行modelsim仿真即可。

补充说明:生成的.v文件应用`include”sin_rom.v”指令添加上相应的头文件,否则modelsim调用时会因为找不到相应的module而报错。

 

 

4、调用modelsim进行rtl仿真的步骤

 

 

 

 

5、在进行filter的过程中出现Error:Can't place multiple pins assigned to pin location Pin_76的错误

分析:76号引脚在程序中当做IO引脚使用了,但是在配置FPGA时当做功能引脚,这两者之间发生冲突。

解决方案:assignment->device->device and pin options->dual-purposepins都改为use asregular IO

 

 

6、Warning(10240): Verilog HDL Always Construct warning at clock.v(237): inferringlatch(es) for varia

分析:存在锁存,即可能有的变量改变没法影响输出的结果。观察发现,改程序段的敏感变量是由系统自动添加的{always@(*)指的是敏感变量根据综合编辑器自动添加},这一点十分不靠谱。

解决方案:将always@(*)改为always@(posedge sys_clk),问题得到了解决


7、对于FPGA如何使输出为高阻态的一些经验:

8、Warning(10227): Verilog HDL Port Declaration warning at v_led.v(4): data typedeclaration for "out" declares packed dimensions but the portdeclaration declaration does not
应该在声明引脚输入输出时就写明位宽,否在之后声明就会出现以上错误。如:

output  out;

reg[7:0] out;

就会产生上述警告,应该写成output reg[7:0] out;才正确。

 

 

9、QUARTUS II中的时钟模块ALTPLL,在对它进行MODELSIM仿真时,Test Bench中设置的系统时钟必须与模块输入的系统时钟一致,否则将无法输出正常时钟。

`timescale 1 ns/100 ps表示的含义是,时钟精度为100ps,时间单位为1ns。若系统输出时钟sys_clk=100M,那么Test Bench中对系统时钟的设置应如下:

always

begin

       #5 sys_clk = 1'b1;

       #5 sys_clk = 1'b0;

End

 

 

10、利用file->create/update->create Symbol file for current files将.bdf文件转化为.bsf文件时,出现can’topen read-only file ****.bsf的问题。

解决方案:在工程所在文件夹中建立一个空的.txt.文件,并重命名为想要转化的.bsf文件,然后重新按上述步骤转化即可。

 

 

11、关于利用MATLAB生成.mif文件,被QUARTUS II调用的一些问题在源程序中已经列出,尤其需要注意的是到底输出的是有符号十进制还是无符号十进制数是在程序中设定的。

 

depth =256; %存储器的单元数

widths = 8;%数据宽度为8

%%N = 0 :255;

%%s =sin(2*pi*N/256);%计算0~2*pi之间的sin

fidc = fopen('sin_b.mif','wt')

fprintf(fidc , 'depth= %d;\n',depth);

fprintf(fidc, 'width= %d;\n',widths);

%如果输出的结果是无符号数的话

%fprintf(fidc, 'address_radix = UNS;\n');

%fprintf(fidc,'data_radix = UNS;\n');

%如果输出结果为有符号十进制数字,只需将UNS改成dec即可

fprintf(fidc, 'address_radix= dec;\n');

fprintf(fidc,'data_radix= dec;\n');

fprintf(fidc,'contentbegin\n');

for(x = 1 :depth)

    fprintf(fidc,'%d:%d;\n',x-1,round(127*sin(2*pi*(x-1)/256-2*pi/3))); 

end

fprintf(fidc, 'end;');

fclose(fidc);

 

 

12、ALTPLL模块的复位信号是高有效(当复位信号时高电平是,系统复位),而编程习惯采用的是低有效(当复位信号时低电平时,系统复位)。这两者产生矛盾。

解决方案:可以在ALTPLL复位信号前加一个非门,或者ALTPLL模块直接不用复位信号。

 

14 向FPGA的FLASH中烧写程序的方法

(1)通过AS下载模式,其中要下载的程序对应的是.pof的文件

(2)通过JTAG下载模式,具体操作步骤如下:

有的时候在通过AS口给配置芯片进行配置时候,Quartus会报错Error: Can't recognize silicon ID for device 1,有可能是目标器件在软件中的选择与外部真正的目标器件不一致引起的。例如软件中选择了EPCS4,但是外部却是EPCS1。这样子一下不好分析是什么错误引起的,到底是配置芯片出问题了还是AS口连接有问题,这时候可以通过Jtag口利用jic文件将FPGA芯片当做桥接芯片来对EPCS芯片进行配置,若是可以,并且上电后数据可以正确导入,说明配置芯片没有问题,问题出在AS口的连接上。

 

JIC文件是通过将sof文件进行转化,然后通过jtag口下载近配置芯片的,同AS口下载pof文件有异曲同工之妙,只需将下载线插在jtag口上即可

    废话少说,首先编译生成SOF文件,也就是JTAG方式下的下载文件,然后

1   文件里选择“Convert Programming Files”,出现对话框后

2   programming file type里选.jic

3   configuration device里选择相应的串行配置器件(此处应选择EPCS4)

4   file name选择转换文件

5   sof data,单击add file选择sof文件

6   flash loader单击add device选择FPGA器件

 

然后OK生成JIC文件,后面的事情跟JTAG下下载一样,只是将文件类型选为JIC文件,然后进行下载即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值