FPGA设计思想

FPGA设计思想


FPGA与CPU编程有很大不同,但在编程思想上基本上可以借鉴C语言编程。对于FPGA的不同功能块,相互之间时并行执行的,互不干扰;但现实中,实现一个较小的完整的功能块,必然是顺序操作的。
先介绍下主流设计方式。FPGA主要包含三种设计方式:面向状态的设计面向活动的设计面向结构的设计
1)面向状态的设计是以状态机为代表的设计方式,即通过控制信号和时序信号触发状态机进行状态的迁移。状态机的设计是FPGA开发中必不可少的环节。
2)面向活动的设计是以数据流和流程图为代表的设计方式。尤其是在传输系统、实时算法设计中,常使用基于数据流的设计方式。常见的数据流的操作方式包括数据的寄存器同步缓冲、数据传递、数据运算与流水设计、数据的存取等。
3)面向结构的设计常用于较大的系统设计中,用于描述模块与模块、单元与单元之间互联关系,主要包括数据信号与控制信号。根据不同的层次描述,主要可以分为系统及描述、寄存器级结构描述、门级结构描述等。

对比在C语言中,状态机代表不同的情况,活动代表单个模块,结构对应于整个系统中的不同模块。根据C语言顶层设计思想,将系统根据不同功能分为不同功能模块,用不同的函数组成一个功能模块,而函数内部变量用于数据操作。
结构、活动、状态并没有明显的区分,可以认为同一系统功能的不同层次切分。
在实现一个小功能的时候,可以采用状态机进行不同步骤的跳转执行。但如果整个功能流程比较复制时,状态机的跳转太过繁琐,混乱。
推荐使用类似与C语言的基于仿顺序操作的用法模板。

always@(posedge CLK or negedge RSTn)
beging
    if(!RSTn)
    begin
        i<=4'd0;
        rLED<=4'b0000;
    end
    else
case(i)
    0:beginrLED<=4'b0001;i<=i+1'b1;end
    1:if(Timer==T10MS)i<=i+1'b1;end
    2:beginrLED<=4'b0010;i<=i+1'b1;end
    3:if(Timer==T10MS)i<=i+1'b1;end
    4:beginrLED<=4'b0100;i<=i+1'b1;end
    5:if(Timer==T10MS)i<=i+1'b1;end
    6:beginrLED<=4'b1000;i<=i+1'b1;end
    7:if(Timer==T10MS)i<=4'd0;end
endcase
end

总结之下,这个用法可以伸缩的范围非常之大。除外,它所带来的好处也非常之多:
� 提供了VerilogHDL语言顺序操作的支持。
� 提高了模块的表达能力。
� 提供了仿顺序操作·建模的结构基础。
————————————————
版权声明:本文为CSDN博主「枫_在路上」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/su1041168096/article/details/81778143

已标记关键词 清除标记
01 试看小梅哥fpga设计思想与验证方法视频:http://bbs.elecfans.com/jishu_484523_1_1.html 02 芯航线FPGA开发平台设计初衷:http://bbs.elecfans.com/jishu_514523_1_1.html 03 芯航线FPGA学习平台介绍:http://bbs.elecfans.com/jishu_514526_1_1.html 04 芯航线FPGA学习平台焊接记录:http://bbs.elecfans.com/jishu_514914_1_1.html 05 芯航线FPGA学习平台系统调试:http://bbs.elecfans.com/jishu_515169_1_1.html 06【连载视频教程(一)】科学的开发流程:http://bbs.elecfans.com/jishu_515340_1_1.html 07【连载视频教程(二)】3-8译码器设计验证:http://bbs.elecfans.com/jishu_515468_1_1.html 08【连载视频教程(三)】二进制计数器设计验证:http://bbs.elecfans.com/jishu_515476_1_1.html 09【连载视频教程(四)】高性能计数器IP核使用:http://bbs.elecfans.com/jishu_515714_1_1.html 10【连载视频教程(五)】BCD码计数器设计验证:http://bbs.elecfans.com/jishu_515893_1_1.html 11【连载视频教程(六)】例解阻塞赋值与非阻塞赋值:http://bbs.elecfans.com/jishu_516094_1_1.html 12【连载视频教程(七)】例说状态机:http://bbs.elecfans.com/jishu_516249_1_1.html 13【连载视频教程(八)】基于状态机的独立按键消抖:http://bbs.elecfans.com/jishu_516791_1_1.html 14【连载视频教程(九)】独立按键控制LED与亚稳态问题引入:http://bbs.elecfans.com/jishu_516795_1_1.html 15【连载视频教程(十)】数码管动态扫描设计与实现:http://bbs.elecfans.com/jishu_516979_1_1.html 16【连载视频教程(十一)】UART串口发送模块设计与验证:http://bbs.elecfans.com/jishu_516984_1_1.html 17【连载视频教程(十二)】UART串口接收模块设计与验证:http://bbs.elecfans.com/jishu_518308_1_1.html 18【芯航线FPGA学习平台众筹进度帖】芯航线FPGA开发板入手测试说明:http://bbs.elecfans.com/jishu_518301_1_1.html 19【芯航线FPGA学习平台众筹进度帖】芯航线FPGA学习套件配置文件固化教程 http://bbs.elecfans.com/jishu_518816_1_1.html 20【芯航线FPGA学习平台众筹进度帖】芯航线FPGA学习套件众筹回报已发放完毕,特公布运单号 http://bbs.elecfans.com/jishu_518819_1_1.html 21【芯航线FPGA学习平台众筹进度帖】芯航线FPGA学习套件众筹总结暨抽奖结果 http://bbs.elecfans.com/jishu_520454_1_1.html 22【芯航线FPGA学习平台众筹进度帖】【有奖活动】芯航线FPGA学习平台有奖活动第一季——看教程,秀笔记,赢好礼 http://bbs.elecfans.com/jishu_520463_1_1.html 23【连载视频教程(十三)】嵌入式块RAM应用之双口RAM:http://bbs.elecfans.com/jishu_520914_1_1.html 24【连载视频教程(十四)】搭建串口收发与存取双口RAM简易应用系统: http://bbs.elecfans.com/jishu_520915_1_1.html 25【连载视频教程(十五)】ROM的搭建与Signaltap II 工具使用:http://bbs.elecfans.com/jishu_522774_1_1.html 26【连载视频教程(十六)】FIFO介绍与时序验证:http://bbs.elecfans.com/jishu_522778_1_1.html 27【连载视频教程(十七)】使用
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页