Xilinx 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视图

3cee650534d3baa11dc5113bc47e949a.png

RTL 技术原理图

e6d49fb890633a21497d14809c4b41fd.png

仿真代码

`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

仿真波形

58a1cc5a1d0039a7b0e4b1db32a11104.png

打印输出结果

ebadf3e547d8d820880fb7b7de736f22.png e13f09391bde69a3447e9677cba78bdb.jpeg

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值