【方法】用Quartus II开发Altera公司的FPGA,如何给引脚配置上电初始电平
发布日期:2021-06-29 10:17:13 浏览次数:3 分类:技术文章

本文共 1323 字,大约阅读时间需要 4 分钟。

用Vivado开发Xilinx FPGA的程序时,可以在引脚列表直接配置上电默认电平。例如:

module main(    input clock,    output reg [5:0] leds = 6'b111100);

然而这一招在Quartus II里面行不通,FPGA复位后这些引脚全部都是低电平。

不过可以采用一种变通的方法。Quartus II支持给非引脚reg型变量赋初值,我们可以定义一个普通的reg变量,然后把引脚配置成wire型,用assign语句连线上去:

(注意引脚名称leds改成了leds_out,那么引脚配置文件里面的名称也要改过来)

`define SYSCLK 50000000module main(    input clock,    output [5:0] leds_out);        reg [5:0] leds = 6'b111100;    assign leds_out = leds;        localparam MAXCNT = `SYSCLK / 2 - 1;    reg [31:0] counter = 0;    always @(posedge clock) begin        if (counter == MAXCNT) begin            counter <= 0;            leds <= leds - 1;        end        else            counter <= counter + 1;    endendmodule

这样问题就解决了。(那个always块不能去掉,一旦去掉,编译器就会判定引脚未使用,leds_out就会被优化掉)

 

在内部模块里面也是一样的情况。比如下面的代码,=1的赋值就不起作用,实际上hello的初值为0:

module test(    input clock,    input change,    output reg hello = 1);    always @(posedge clock) begin        if (change)            hello = !hello;    endendmodule

要想让hello的初值为1,还是得采取同样的办法:

module test(    input clock,    input change,    output hello_out);        reg hello = 1;    assign hello_out = hello;        always @(posedge clock) begin        if (change)            hello = !hello;    endendmodule

 

Quartus II和Vivado还有一个不同的地方就是,在Vivado中要用"\15\n"表示换行符"\r\n",而在Quartus II里面换行符必须直接写成"\r\n",写"\15\n"或者"\xd\n"都不行的。

转载地址:https://blog.csdn.net/ZLK1214/article/details/109542038 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:在Quartus II 13.0中用ModelSim-Altera 10.1d进行波形仿真,若修改了Verilog代码,如何不关闭窗口重新用新的代码来仿真
下一篇:二进制小数的意义

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月30日 21时06分52秒