资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
FPGA设计FPGA设计流程设计举例FPGA设计基本原则内容其它典型的FPGA设计流程l设计输入l前仿真功能仿真)l综合(优化、综合、映射)l布局布线l后仿真时序仿真)l生成下载文件,进行板级调试FPGA设计的基本原则l系统原则l硬件原则l同步设计原则l面积和速度的平衡和互换系统原则l准绳:准绳:lFPGA设计要求对设计的全局有个宏设计要求对设计的全局有个宏观的上的合理安排。比如时钟域、模块观的上的合理安排。比如时钟域、模块复用、约束、面积和速度等问题。复用、约束、面积和速度等问题。lFPGA/CPLD的资源情况:的资源情况:l一般是由底层可编程硬件单元、一般是由底层可编程硬件单元、BLOCK RAM资源、布线资源、可配置资源、布线资源、可配置的的IO单元、时钟资源等组成。单元、时钟资源等组成。l前往前往可编程的硬件单元l底层的可编程硬件单元l FF触发器lLUT查找表ll前往时钟资源l锁相环(Phase-Locked Loop,PLL)l延迟锁定环(Delay-Locked Loop,DLL)l 前往硬件原则l1.评判一段HDL代码的优劣标准:l其描述并实现的硬件电路的性能包括面积和速度两个方面)。l2.举例:比较Verilog和语言的区别l C: For(I=0;I16;I+) function(); lVerilog: l reg 3:0counter;l always (negedge rst_n or negedge clk) always (negedge clk)l begin beginl if(!rst_n) case(counter)l counter=4b0; 4b0000:l else 4b0001:l counter = counter+1; l end endcasel end C: Verilog:if() 1) if() else else 2)swithch(variable) 2) case (var) value1: case value1 break; value2: case value2 break; default: endcase解决办法:一:使用if() ;if() ;的结构描述出不带优先级的“平行条件判断语句;二:使用软件将优先级树优化掉前往同步设计原则l异步电路特点:异步电路特点:l电路的核心逻辑用组合逻辑电路实电路的核心逻辑用组合逻辑电路实现。比如异步的现。比如异步的FIFO/RAM读写信读写信号,地址译码等电路;号,地址译码等电路;l电路的主要信号,输出信号等并不电路的主要信号,输出信号等并不依赖于任何一个时钟信号。不是由依赖于任何一个时钟信号。不是由时钟信号驱动时钟信号驱动FF产生;产生;l异步时序电路的最大缺点是容易产异步时序电路的最大缺点是容易产生毛刺。生毛刺。同步时序电路的特点:同步时序电路的特点:电路的核心逻辑用各种各样的触发器电路的核心逻辑用各种各样的触发器实现实现电路的主要信号、输出信号等都是由电路的主要信号、输出信号等都是由某个时钟沿驱动触发器产生出来的;某个时钟沿驱动触发器产生出来的;同步时序电路可以很好的避免毛刺。同步时序电路可以很好的避免毛刺。同步时序电路设计的几个问题:同步时序电路设计的几个问题:是否同步时序电路一定比异步电路更是否同步时序电路一定比异步电路更多使用逻辑资源?多使用逻辑资源?如何实现同步时序电路的延时?如何实现同步时序电路的延时?同步时序电路的时钟如何产生?同步时序电路的时钟如何产生?前往前往面积与速度的平衡和互换原则l概念:概念:l面积:指一个设计消耗的面积:指一个设计消耗的FPGA/CPLD的的逻辑资源的数量逻辑资源的数量l速度:指设计在芯片上稳定运行,所能速度:指设计在芯片上稳定运行,所能够达到的最高频率够达到的最高频率l面积与速度的平衡:面积与速度的平衡:l对面积和速度的要求,和产品的对面积和速度的要求,和产品的质量和成本有直接关系。质量和成本有直接关系。l面积与速度的互换:面积与速度的互换:速度的优势换面积的节约:速度的优势换面积的节约:从理论上讲,一个设计如果时序余量较大,那么就能通过功能从理论上讲,一个设计如果时序余量较大,那么就能通过功能模块的复用减少设计消耗的面积。模块的复用减少设计消耗的面积。面积复制换速度的提高:面积复制换速度的提高:假设,一个设计的时序要求比较高,普通方法达不到设计频率,假设,一个设计的时序要求比较高,普通方法达不到设计频率,那么一般可以通过将数据流串并转换,并行复制多个操作模块,那么一般可以通过将数据流串并转换,并行复制多个操作模块,对整个设计采取对整个设计采取“乒乓操作和乒乓操作和“串并转换的思想进行运作,串并转换的思想进行运作,在在芯片输出模块再对数据进行芯片输出模块再对数据进行“并串转换并串转换”。这样从宏观上看整。这样从宏观上看整个个芯片满足了处理速度的要求。芯片满足了处理速度的要求。前往其它阻塞赋值与非阻塞赋值的区别和用法module non_block (a,c,clk); 非阻塞赋值 input a; input clk; output c; reg b,c; always (negedge clk) begin b=a; c=b; endendmodulemodule non_block (a,c,clk); 阻塞赋值input a;input clk; output c; reg b,c; always (negedge clk) begin b=a; c=b; endendmodule两种赋值方式的使用l规则:l在always块中,组合逻辑设计使用阻塞赋值“”。l在always块中,时序逻辑设计使用非阻塞赋值“”。l在always块中,当即存在组合逻辑,有存在时序逻辑时,使用非阻塞赋值“” 。module test(a,b,c,d,y); module test(a,b,c,d,y);input a,b,c,d; input a,b,c,d;output y; output y; reg y,tmp1,tmp2; reg y,tmp1,tmp2;always (a or b or c or d) always (a or b or c or d or tmp1 or tmp2) begin begin tmp1=a & b; tmp1=a & b; tmp2=c & d; tmp2=c & d; y =tmp1 | tmp2; y =tmp1 | tmp2; end endendmodule endmodule前往module test(d,clk,q3); 解决方法:module test(d,clk,q3); input d,clk; input d,clk; output q3; output q3; reg q1,q2,q3; reg q1,q2,q3; always (negedge clk) always (negedge clk) begin begin q1 = d; q3 = q2; q2 = q1; q2 = q1; q3 = q2; q1 = d; end endendmodule endmodule解决二:module test(d,clk,q3); 解决三: module test(d,clk,q3); input d,clk; input d,clk; output q3; output q3; reg q1,q2,q3; reg q1,q2,q3; always (negedge clk) always (negedge clk) q1 = d; q3 = q2; always (negedge clk) always (negedge clk) q2 = q1; q2 = q1; always (negedge clk) always (negedge clk) q3 = q2; q1 = d; endmodule endmodule前往 module test() module test() input a,b,clk,rst_n; input a,b,clk,rst_n; output q; output q; reg q; reg q; always always (negedge clk or negedge rst_n) (negedge clk or negedge rst_n) begin begin if(!rst_n) q = 1b0; if(!rst_n) q = 1b0; else begin else begin tmp = a & b; tmp = a & b; q = tmp; q = tmp; end end end end end module end module谢谢大家!
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号