当前位置:首页 > 新闻资讯 > FPGA之家动态 >

Xilinx FPGA 学习笔记

时间:2024-08-01      来源:网络搜集 关于我们 0

欢迎FPGA工程师加入官方微信技术群

点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群

一、时序设计

方法1.通过状态机来实现,通过verilog控制FPGA,让它该快的时候快,该慢的时候慢。

方法2.FPGA中运行CPU

       把逻辑控制顺序复杂的事情用C代码来实现,而实时处理部分用verilog实现,并且verilog这部分可以被C代码控制。Xilinx的FPGA目前支持的CPU有Microblaze,ARM9,POWERPC,其中Microblaze是软核,其余的两款是硬核。

  (1)软核就是用代码实现的CPU核,配置灵活;

   (2)硬核就是一块电路,已经做好了,不能再发生变化;

软核灵活性好,但是要占用FPGA的资源。硬核不占用FPGA的资源,速度和性能更好。比如Xilinx的DDR内存控制器,就是一种硬核,其运行速度很高。

二、基础语法

1. always @(),括号里是*,表明是一直敏感的;

2.   (1)   <=  非阻塞赋值,在一个always模块中,所有语句一起更新

    (2) =   阻塞赋值,或者给信号赋值,如果在always模块中,这条语句被立刻执行。

非阻塞赋值

always @(posedge clk)begin

      a <= b;

       c <= a;    

end

执行结果是a的值是b,c的结果依旧是a

阻塞赋值

always @(posedge clk)begin

a = b;

c = a;

end

       执行结果a的值是b,c的结果也是b。

一般我们使用的都是非阻塞的赋值语句,这样可以很好地控制同步性。

3、预处理命令

`include file1.v

`define X=1;

`define Y;

`ifdef Y

Z = 1;

`else

Z = 0;

`endid

      有时候需要一些公共的宏参数,我们可以放在一个文件中,比如文件名XXX.v,。那么我们就可以 `include XXX.v ,就可以包含文件中定义的宏参数

三、小练习

1.加法器的设计

module adder(

input [3:0] a,

input [3:0] b,

input cin,

output [3:0] sum,

output cout

);

assign {cout,sum} = a + b + cin;

endmodule

RTL视图

RTL 技术原理图

仿真代码

`timescale 1ns / 1ps  //1ns的仿真刻度,1ps的仿真精度

//////////////////////////////////////////////////////////////////////////////////

// Company:

// Engineer:

//

// Create Date: 2017/10/22 10:47:58

// Design Name:

// Module Name: simu

// Project Name:

// Target Devices:

// Tool Versions:

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//////////////////////////////////////////////////////////////////////////////////

module simu(

);

reg [3:0] a;

reg [3:0] b;

reg cin;

wire cout;

wire [3:0] sum;

reg [4:0] i,j; //中间变量

adder inst(

.a(a),

.b(b),

.cin(cin),

.cout(cout),

.sum(sum)

);

initial begin

a =0; b=0; cin=0;

for(i=1;i<16;i=i+1)

#10 a = i;

end

initial begin

for(j=1;j<16;j=j+1)

#10 b = j;

end

initial begin

$monitor($time,,,"%d + %d + %b = {%b,%d}",a,b,cin,cout,sum);

#160 $finish; //160ns 后仿真结束

end

endmodule

仿真波形

打印输出结果

欢迎通信工程师和FPGA工程师关注公众号

全国第一大FPGA微信技术群

欢迎大家加入全国FPGA微信技术群,这个群体拥有数万工程师、一群热爱技术的工程师,这里的FPGA工程师相互帮助,相互分享,技术氛围浓厚!赶紧叫上小伙伴一起加入吧!

用手指按住就可以加入FPGA全国技术群哦

FPGA之家元器件芯城

优势元器件服务,有需求请扫码联系群主:金娟 邮箱:293580331@qq.com 欢迎推荐给采购

ACTEL、AD部分优势订货(经营全系列):

XILINX、ALTERA优势现货或订货(经营全系列):

(以上器件为部分型号,更多型号请咨询群主金娟)

服务理念:FPGA之家元器件自营芯城,旨在方便工程师快速方便购买器件服务,经过数年竭诚服务,我们的客服遍布国内大型上市公司、军工科研单位、中小企业、最大的优势是强调服务至上的理念、并且做到快速交货、价格优惠!

直营品牌:Xilinx ALTERA ADI TI NXP ST E2V、镁光 等百余元器件品牌,尤其擅长欧美对华禁运器件,欢迎工程师朋友把我们推荐给采购或者亲自咨询我们!

我们将一如既往提供业内最佳服务!

FPGA技术群官方鸣谢品牌:Xilinx、 intel(Altera)、microsemi(,Actel)、LattIC e,Vantis,Quicklogic,Lucent等


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言