FPGA学习要点(一)

学号:16010199021

姓名:李若宇

转载自 http://blog.csdn.net/sun19910114/article/details/38683703(有删改)

嵌牛导读:fpga的学习是一条漫长又艰辛路程,需要我们不断记录

嵌牛鼻子:FPGA

嵌牛提问:在FPGA中异步时序电路的最大缺点是什么

嵌牛正文:

1.FPGA不是编程语言,而是一种可综合的硬件描述语言。

2.Verilog 支持两种进程initial和always进程

3.阻塞与非阻塞指的相对于进程本身而言的。

4.使用进程模块的电路类型:

组合电路-----对组合逻辑中使用的所有输入敏感

例子:

always@(a or b or sel)

时序电路-----仅对时钟和控制信号敏感

例子:

always @(posedge clk or negedge clr)

5.可以用case语句完成多路选择器的功能。

6.verilog中有两类子程序:

函数和任务

函数-----根据输入返回一个值

-----产生组合逻辑

-----用在表达式中:assign mult_out=mult(ina,inb);

-----函数是组合逻辑,不能含有任何延时,事件,或者时序控制声明,至少有一个输入变量

总是返回一个变量

-----可以调用函数,但是不能调用任务。

任务-----可以是组合或者寄存器

-----以声明的形式调用任务:stm_out(nxt,first,sel,filter);

-----与其他编程语言中的任务相似

-----与函数不同任务不需要传递参数,而函数要传递参数

-----可以调用任务和函数。

----- 可以含有任何延时,事件,或者时序控制声明

-----返回零个或者多个数值

7.可综合的verilog语法子集是指用硬件可以实现的语法。力求用最简单的语言实现最复杂的硬件电路。

8.硬件都有相应的输入输出的接口,或者是输入或者是输出,或者是输入输出。

9.reg型是指组合逻辑里面的一个寄存数据的,wire是组合逻辑里面的一条连线。

10. define定义了一个参数,在整个工程里面都是有效地。parameter定义的一个参数

只在这个文件里面进行适用的。

11.各种逻辑操作符,移位操作符,算术操作符大多是课综合的。

12.assign 一般是只针对于组合逻辑,而always语句既可以用于组合逻辑

又可以用于时序逻辑,always模块的敏感表,如果是电平,则为组合逻辑

如果是沿信号posedge或者negedge 则为时序逻辑。

13.begin-------end和C语言里面的{}是类似的 。

14.for 语句 -----循环 因为综合出来的结果可能比较浪费资源

所以就一般用的比较少,但是在一些特定的设计中可以起到

事半功倍的效果。

15.total logic element总共消耗的逻辑单元。

16. 行为级仿真可以理解为功能仿真(前仿真);布局布线后仿真可以理解为时序仿真(后仿真)

17.第一个写的非常好的代码 如下:注意其中clk_div_r和cnt为什么被定义成reg型的,并且对应的含义是什么

module clkdiv(

clk,rst_n,

clk_div

);

input clk; //50MHz

input rst_n; //低电平复位信号

output clk_div; //分频信号,连接到蜂鸣器

//---------------------------------------------------

reg[19:0] cnt; //分频计数器

always @ (posedge clk or negedge rst_n) //异步复位

if(!rst_n) cnt <= 20'd0;

else cnt <= cnt+1'b1; //寄存器cnt 20ms循环计数

//----------------------------------------------------

reg clk_div_r; //clk_div信号值寄存器

always @ (posedge clk or negedge rst_n)

if(!rst_n) clk_div_r <= 1'b0;

else if(cnt == 20'hfffff) clk_div_r <= ~clk_div_r; //每20ms让clk_div_r值翻转一次

assign clk_div = clk_div_r;

endmodule

18.时序逻辑中时钟和复位信号是必须的。

19.注意wire赋值的一个问题如下:

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

其相当于如下的一个赋值语句

wire[2:0] key_an;

assign key_an=key_rst_r&(~key_rst);

其实现的效果是一样的。 此种方法为: 脉冲边沿检测法

20. 实际工作中,除了描述仿真测试激励(Testbench)时使用for循环语句外,

极少在RTL级编码中使用for循环,这是因为for循环会被综合器展开为所有变量情况

的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,

造成巨大的浪费。一般常用case语句代替。

21. FPGA一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富。

22.异步电路和同步时序电路的区别异步电路:

电路核心逻辑有用组合电路实现;?????? 异步时序电路的最

大缺点是容易产生毛刺;?????? 不利于器件移植;?????? 不利于静态时序分析(STA)、

验证设计时序性能。同步时序电路:?????? 电路核心逻辑是用各种触发器实现;

?????? 电路主要信号、输出信号等都是在某个时钟沿驱动触发器产生的;??????

同步时序电路可以很好的避免毛刺;?????? 利于器件移植;

利于静态时序分析(STA)、验证设计时序性能。

23.led_value_r; // LED值寄存器(可以理解为LED的输出寄存器)

24.assign {led3,led2,led1,led0} = ~led_value_r;

//注意这个赋值语句的特点和优点所在。

25.注意在FPGA里面计数器计时到了,即计数器计数到某一位了,就相当于单片机里的延时的功能。

要求注意。

26.如下所示的是一个组合逻辑的功能实现的一个实例:

always @ (num) //注意着就是组合逻辑的实现,其中num一旦发生变化,那么对应的case语句就会执行。

case (num) //NUM值显示在两个数码管上

4'h0: sm_dbr <= seg0;

4'h1: sm_dbr <= seg1;

4'h2: sm_dbr <= seg2;

4'h3: sm_dbr <= seg3;

4'h4: sm_dbr <= seg4;

4'h5: sm_dbr <= seg5;

4'h6: sm_dbr <= seg6;

4'h7: sm_dbr <= seg7;

4'h8: sm_dbr <= seg8;

4'h9: sm_dbr <= seg9;

4'ha: sm_dbr <= sega;

4'hb: sm_dbr <= segb;

4'hc: sm_dbr <= segc;

4'hd: sm_dbr <= segd;

4'he: sm_dbr <= sege;

4'hf: sm_dbr <= segf;

default: ;

endcase

27. 乘法器是众多数字系统中的基本模块。从原理上说属于组合逻辑范畴;

但从工程实际设计上来说,它往往会利用时序逻辑设计的方法来实现,属于时序逻辑的

范畴。

28. 一个基本的要求是能够把自己设计的乘法器应用到基本的工程应用实践中。乘法器设计有

两种方法,一种是组合逻辑设计,一种是时序逻辑设计。

29.利用时序逻辑来设计一个16位的乘法器,既然是利用时序逻辑来设计,那么就要利用时钟信号来控制

乘法运算。

30.组合和时序的乘法器的比较:

利用时序设计可以使整体设计具有流水线结构的特征,能适用在各种工程实践中。

31.注意理解乘法器的对应的速度。

32.这里设置了几个内部的寄存器:

reg[15:0] areg; //乘数a寄存器

reg[15:0] breg; //乘数b寄存器

reg[31:0] yout_r; //乘积寄存器

这里之所以设置成寄存器类型的是为了后面的

完成相应的以为和累加的过程。

33.max232在传输电平的过程中如果传输数据没有开始前,则TX和RX是一直保持为高电平的。

34.SDRAM比较SRAM

因为制造工艺的原因,SDRAM比SRAM的读写速度要慢一些,并且容量比SRAM要大一些

但是 控制起来相对复杂,而且要不停的刷新。

SRAM 控制起来相对简单,不需要定时进行刷新操作。

35.无论是读写一个对应的芯片 还是自己编写一个IIC的通信协议 :

那么必须搞清楚的是时序图问题,即读写时序必须搞清楚。

36.对FPGA必须强势,没有退路。

37.HY57V641620ET-7 是最常用的SDRAM容量是64M 位宽是16位的。

38.注意FPGA进行代码下载时AS口是把代码配置到EPCS 中,JTAG口不是配置到EPCS中

这一点要求要注意。

39.M4K 指的就是4K bit的存储容量。

40.注意FPGA中存储器的设计。存储器的工作原理是:

存储器为每一个存储单元编写一个地址,

因此,只有地址指定的那些存储单元才能够

与公共的IO连接,然后进行存储数据的读/写操作。

通常存储器分为:

只读存储器(ROM),随机存储器(RAM) 顺序存储器和直接存储器。

41.只读存储器ROM:

ROM是一种重要的时序逻辑存储电路,它的逻辑功能是在地址信号的选择下,

从指定的存储单元中读取相应的数据。ROM只能进行数据的读取,而不能修改或者

写入新的数据。

42.注意PLL的对应一个对应的应用,PLL产生的时钟从频率和相位上都比较稳定,而且

其时钟网络延时都比内部逻辑产生的分频时钟要小的多。

43.做顶层PPL,如果我们要看c0和c1的对应输出 ,哪怕是在仿真里面看其输出的对应结果

也要求把c0 c1定义成reg(寄存器)型,如果不作为输出,即如果作为另外两个always

语句的驱动时钟,那么就不用定义成寄存器类型的变量,而相应的其只是在内部起到连线、

作用,那么就可以(必须)定义成wire型的变量。

44.要注意FPGA中总线和总线的操作。

45.通过加法器和乘法器等一些基本模块,讨论流水线的一些基本概念。

46.所谓流水线设计实际上就是把规模较大,层次较多的组合逻辑电路分为几个级,在

每一级插入寄存器组并暂存中间数据。K级的流水线就是从组合逻辑的输入到组合逻辑

的输出恰好有K个寄存器组(分为K级,每一级都有一个寄存器组),上一级的输出

是下一级的输入而且没有反馈的电路。

47.流水线设计在性能上的提高是以消耗较多的存储器资源为代价的。

48.流水线处理是提高组合逻辑设计的处理速度和吞吐量的最常用的手段。

49.流水线处理方式之所以能提高时钟频率,是因为复制了处理模块,它是面积换取

速度思想的一种具体体现。

50.数字逻辑的门类千变万化,但就其本质而言,只有组合逻辑和时序逻辑两大类。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • fpga规范 工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎...
    Michael_Johnson阅读 1,869评论 1 4
  • 姓名:徐娇 学号:17011210547 转自 http://mp.weixin.qq.com/s/WNigJh...
    徐Jiao阅读 2,344评论 0 3
  • 学号:16010199021 姓名:李若宇 转载自 http://blog.csdn.net/sun1991011...
    承瑜阅读 809评论 0 0
  • 一个计数器通常是由一组触发器构成,该组触发器按照预先给定的顺序改变其状态,如果所有触发器的状态改变是在同一时钟脉冲...
    锦穗阅读 13,172评论 0 6
  • 她是一个长相平凡,但不俗的女孩。 但当有一天,她和他相遇。她拿着一摞摞厚厚的文件,从他面前走过。两人穿擦相碰,文件...
    七年之灰阅读 196评论 1 0