论坛风格切换切换到宽版
发帖 回复
返回列表  提醒:不能用迅雷等P2P下载,否则下载失败标(二级)的板块,需二级才能下载,没二级不要购买,下载不了
  • 930阅读
  • 1回复

[技术文章]Xilinx FPGA 学习笔记(1) [复制链接]

上一主题 下一主题
在线shuszhao
 

性别:
帅哥
发帖
18056
金币
36481
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看楼主 倒序阅读 使用道具 0楼 发表于: 2017-10-25
a>(~C'(<  
;Xh5oB\)W  
\P@S"QO  
\>;%Ji  
paYz[Xq  
82 .HH5Z{  
一、时序设计 [)iN)$Mv  
方法1.通过状态机来实现,通过verilog控制FPGA,让它该快的时候快,该慢的时候慢。 +U=KXv  
方法2.FPGA中运行CPU ER2V*,n@  
       把逻辑控制顺序复杂的事情用C代码来实现,而实时处理部分用verilog实现,并且verilog这部分可以被C代码控制。Xilinx的FPGA目前支持的CPU有Microblaze,ARM9,POWERPC,其中Microblaze是软核,其余的两款是硬核。 Bn_g-WrT  
  (1)软核就是用代码实现的CPU核,配置灵活; JilKZQmk  
   (2)硬核就是一块电路,已经做好了,不能再发生变化; 0lf"w@/  
软核灵活性好,但是要占用FPGA的资源。硬核不占用FPGA的资源,速度和性能更好。比如Xilinx的DDR内存控制器,就是一种硬核,其运行速度很高。 |YXG(;-BS  
w< mqe0  
DCK_F8  
二、基础语法 @|'Z@>!/pV  
1. always @(),括号里是*,表明是一直敏感的; n531rkK-   
2.   (1)   <=  非阻塞赋值,在一个always模块中,所有语句一起更新 (ic@3:xR  
    (2) =   阻塞赋值,或者给信号赋值,如果在always模块中,这条语句被立刻执行。 %\l0-RA@<  
非阻塞赋值 _0*=u$~R  
always @(posedge clk)begin      a <= b;       c <= a;    end执行结果是a的值是b,c的结果依旧是a 5IO3 %p?  
Hq-v@@0 *  
bx]1 4}6  
阻塞赋值 a^x  0 l  
always @(posedge clk)begina = b;c = a;end       执行结果a的值是b,c的结果也是b。 1V\1]J/  
一般我们使用的都是非阻塞的赋值语句,这样可以很好地控制同步性。 +ruj  
4zwif&  
U#$:\fT  
3、预处理命令`include file1.v`define X=1;`define Y;`ifdef YZ = 1;`elseZ = 0;`endid      有时候需要一些公共的宏参数,我们可以放在一个文件中,比如文件名XXX.v,。那么我们就可以 `include XXX.v ,就可以包含文件中定义的宏参数 R1~7F{FW  
T5V$wmB\W  
g.=!3e&z%  
三、小练习 eoJFh  
1.加法器的设计 fW[_+r]  
module adder(input [3:0] a,input [3:0] b,input cin,output [3:0] sum,output cout);assign {cout,sum} = a + b + cin;endmoduleRTL视图 [@zkv)D6  
Hj1k-Bs&'w  
~(M*6b  
78gob&p?  
-/1d&  
RTL 技术原理 )biX8yq hR  
P0Aas)!  
'2j~WUEmg  
仿真代码 Zq9>VqGe  
`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 begina =0; b=0; cin=0;for(i=1;i<16;i=i+1)#10 a = i;endinitial beginfor(j=1;j<16;j=j+1)#10 b = j;endinitial begin$monitor($time,,,"%d + %d + %b = {%b,%d}",a,b,cin,cout,sum);#160 $finish; //160ns 后仿真结束endendmodule )y5iH){ !  
}el,^~  
仿真波形 3k`NNA  
`dP? 2-Z  
hg!x_Eq|  
x vHOY:  
打印输出结果 W0+u)gDDz  
~y`Pwj  
:0{AP_tvcC  
YALyZ.d  


评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

一般

差劲
离线283977909

性别:
人妖
发帖
87
金币
303
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 1楼 发表于: 2017-10-26


快速回复
限150 字节
 
上一个 下一个