ISE14.7调试心得

更新时间:2023-10-21 07:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ISE14.7调试心得

第一次做软件一般都是从“hello world”开始的。第一次做硬件一般都是从LED开始的。先做个跑马灯,熟悉一下板子和xilinx芯片以及ISE软件的使用方法。

真是悲剧~写个跑马灯,我都感觉verilog HDL编程生疏了,出现了不少问题,在此记下,希望以后不要再范了。不过,就拿如何写testbench来说,我是会了忘忘了学学了又不会了。这次又复习了一遍。真的希望以后可以将自己的知识和技能的基础打牢固。不要再有那么多琐碎和烦心的事情。

第一个程序的错误:

1、 posedge clk and negedge rst_n应该写为posedge clk or negedge rst_n 2、posedge clk or nedge rst_n应该写为posedge clk or negedge rst_n 3、

module LED8(

input clk_100M; input rst_n; output [0:7] LED );

应该定义为: module LED8(

input clk_100M, input rst_n, output [0:7] LED );

将端口定义包括类型定义一起放在module后的括号内的时候,之间用逗号隔开。

4、数组假设abc[0:7],单个元素写成abc[0]而不是abc(0)。

5、100MHz分频成1Hz。计数为1042*1024*100(27'h640_0000)。 6、两种方式定义信号端口 第一种:

module LED8(clk_100M,rst_n,LED); input clk_100M; input rst_n; output [0:7] LED; reg [0:7] LED;

reg [0:7] choose; //Choose the LED to highlight reg [0:26] count; 没错误。 第二种: module LED8(

input clk_100M, input rst_n, output [0:7] LED );

reg [0:7] LED;

reg [0:7] choose; //Choose the LED to highlight reg [0:26] count;

提示错误:

ISE软件是:ERROR:HDLCompilers:27 - \

Quartus软件是:Error (10759): Verilog HDL error at LED8.v(34): object LED declared in a list of port declarations cannot be redeclared within the module body。 都是说重复定义LED信号。

所以,采用第二种的时候,不能再将输出端口定义为reg型。另外,代码中使用assign对LED赋值会提示如下错误:

ERROR:HDLCompilers:247 - \line 60 Reference to vector wire 'led' is not a legal reg or variable lvalue

ERROR:HDLCompilers:106 - \解决办法:必须添加中间变量如 reg [0:7] abc;使用assign LED = abc;对LED赋值。

小结:第一种定义方法,输出变量若使用assign进行赋值就不能定义为reg型,且需要使用中间变量;若在always中进行赋值就需要定义为reg型;

第二种方法,默认的是wire型,故不能在always中赋值,必须由中间变量用assign赋值。

7、本来写了个testbench,才发现要想实现LED变化一次,count要计数1042*1024*100(27'h640_0000)。这么大数据很难看到现象。因为板子的输入时钟就是100M,于是就想通过DCM得到低于10M的数据吧。跳出如下对话框:

即,最小的输出频率是32M。这跟不分频没多大区别了。好吧,我承认,这么高级的板子做跑马灯有些大材小用了。╮(╯▽╰)╭

8、仿真时要注意要显示所有脉冲,ZOOM IN,ZOOM OUT

本文来源:https://www.bwwdw.com/article/uhpf.html

Top