您的位置:首页 > 其它

FPGA学习中的小知识4

2010-11-03 20:21 239 查看
34、在仿真文件中,输出的变量都为wire数据类型。

35、Verilog中不存在j++语句。function、mask都要有endfunction、endmask来结束。

36、如果function有返回值,function后面要加返回值的宽度和返回值的名称。如:

module tryfunct(clk,n,result,reset);

input clk,reset;

input [3:0] n;

output [31:0] result;

reg [31:0] result;

always @(posedge clk or i)

begin

if(!reset)

result=0;

else

result=sqr(n);

end

function [31:0] sqr;

input [3:0] j;

sqr=j*j;

endfunction

endmodule

在function [31:0] sqr;如果语句在function后面,没有[31:0],就会出现逻辑错误,并没有语法错误。

37、initial是在系统开始运行的时候,可以理解为在0时刻之前运行。当使用多个initial时,是为了实现程序并行,因为如果放在一个initial时,会在initial中逐条运行,不符合设计要求。

38、FPGA开发流程--需求分析到模块划分

需求说明文档

器件选型:逻辑资源、功耗、IO数量、封装

配置电路

开发工具选择

电路板的可扩展性

在线调试和板级调试

分模块设计

39、模块端口声明为net数据类型可以的是input、output、inout。而模块端口声明为register数据类型的只能是output。

40、在定义负数时,在位宽前面加负号,在其他位置都会出错。

41、==只支持0和1,而===(条件相等)支持所有的数值,如x、z,常用于仿真。

42、casez:认为case条件下的所有z值不重要,不是逻辑值,所有z值也可以表示为?。

casex:认为case条件下所有x和z值不重要,不是逻辑值。用x表示。

43、forever要保持时间的前进。

44、注意for循环中的函数,如果,for循环中有一个乘法器,则在电路中就会有四个乘法器。

45、时间单位:1 s = 10^3 ms = 10^6 us = 10^9 ns = 10^12 ps = 10^15 fs=10^18阿秒=10^21渺秒=10^43普朗克常数

46、脉冲边沿检测法:

reg [2:0] key_rst;

always @(posedge clk or negedge rst_n)

if(!rst_n)

key_rst=3'b111;

else

key_rst={bu1,bu2,bu3};

reg [2:0] key_rst_r;

always @(posedge clk or negedge rst_n)

if(!rst_n)

key_rst_r=3'b111;

else

key_rst_r=key_rst;

//检测下降沿

wire [2:0] key_an=key_rst_r & (~key_rst);

//检测上升沿。

wire [2:0] key_an=(~key_rst_r) & key_rst;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐