一、时序设计
方法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 1058 // 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
+关注
关注
1656文章
22292浏览量
630405 -
Xilinx
+关注
关注
73文章
2192浏览量
129972 -
内存
+关注
关注
9文章
3173浏览量
76120 -
Verilog
+关注
关注
30文章
1370浏览量
114159 -
状态机
+关注
关注
2文章
497浏览量
28858
原文标题:Xilinx FPGA 学习笔记
文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
PLD每周焦点聚焦(11.19-11.25)
FPGA学习笔记汇总(7.13更新)
入门 Z-turn Board 学习笔记(汇总ing)
【Artix-7 50T FPGA申请】FPGA由Altera转Xilinx系列笔记
Xilinx FPGA学习笔记(1):1602液晶IP核设计与实现
Xilinx FPGA如何通过深度学习图像分类加速机器学习
如何借助Xilinx FPGA和MATLAB技术加速机器学习应用
FPGA学习教程之硬件设计基本概念

Xilinx FPGA学习笔记
评论