ok FPGA设计高级进阶(
2 目标目标 掌握FPGA的基本设计原则掌握FPGA的基本设计原则 乒乓结构、流水线设计乒乓结构、流水线设计 异步时钟域的处理异步时钟域的处理 状态机的设计状态机的设计 毛刺的消除毛刺的消除 掌握FPGA设计的注意事项掌握FPGA设计的注意事项 从文档到设计完成从文档到设计完成 从设计实例加深设计思想从设计实例加深设计思想 3 提纲提纲 FPGA的基本设计原则FPGA的基本设计原则 FPGA设计的注意事项FPGA设计的注意事项 设计实例设计实例 交织器交织器 数据适配器数据适配器 4 推荐书籍推荐书籍 Verilog Verilog数字系统设计教程Verilog数字系统设计教程 夏宇闻北京航天航空大学出版社 硬件描述语言Verilog硬件描述语言Verilog刘明业等译 清华大学出版社 FPGA 基于FPGA的系统设计(英文版)基于FPGA的系统设计(英文版) Wayne Wolf 机械工业出版社 Altera FPGA/CPLD设计(高级篇)Altera FPGA/CPLD设计(高级篇) EDA先锋工作室 人民邮电出版社 IC设计 Reuse ology manual for system-on-a-chip designsReuse ology manual for system-on-a-chip designs 3rd ed. M ichael Keating, Pierre Bricaud. . 片上系统片上系统可重用设计方法学可重用设计方法学沈戈,等译电子工业出版社, 2004 Writing testbenches functional verification of HDL models / J anick Bergeron Writing testbenches functional verification of HDL models / J anick Bergeron Boston Kluwer Academic, c2000 5 推荐文章推荐文章 http//www.sunburst- Verilog Coding Styles For Improved Simulation Efficiency State Machine Coding Styles for Synthesis Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs Synchronous Resets Asynchronous Resets I am so confused Nonblocking Assignments in Verilog Synthesis, Coding Styles That Kill 6 FPGA设计的两条思路设计的两条思路 控制通路(上午) 有限状态机的设计 异步时钟域的处理 数据通路(下午) 关注算法到结构的映射 7 FPGA设计基本原则设计基本原则 8 目标目标 完成本单元的学习后你将会 加深FPGA设计常用的设计思想和技巧 了解为什么才用流水线设计 掌握处理异步时钟的方法 掌握状态机的设计 了解毛刺消除的方法 9 FPGA设计流程设计流程 综合综合 - Translate Design into Device Specific Primitives - Optimization to Meet Required Area always state or in begin next_state A; next_out 1’b0; casestate A begin ifinx begin next_state C; next_out 1’b1; end else begin next_state A; next_out in; end B ******** C ******** default begin next_state A; next_out 1’b0; end endcase end 58 One-hot Encode parameter A 3b001, B3b010,C 3b100; always state or in begin next_state A; next_out 1’b0; casestate A begin ifinx begin next_state C; next_out 1’b1; end else begin next_state A; next_out in; end B ******** C ******** default begin next_state A; next_out 1’b0; end endcase end 59 状态机的输出状态机的输出 always posedgeclkor negedgerst begin ifrst begin state A; out1’b0; end else begin state next_state; out next_out; end end 60 状态机的置位和复位状态机的置位和复位 异步置位和复位 –与时钟无关 –需要在敏感信号列表中加入触发条件 同步置位和复位 –只在时钟有效跳变沿到来时,才对状态机进 行置位或复位 –敏感信号列表中不能列出触发条件 61 异步置位和复位异步置位和复位 always posedge clk or posedge rst or posedge set begin ifrst q0; else ifset q1; else qd; end always posedge clk or negedge rst or negedge set begin ifrst q0; else ifset q1; else qd; end 62 同步置位和复位同步置位和复位 always posedge clk begin ifrst q0; else ifset q1; else qd; end always posedge clk begin ifrst q0; else ifset q1; else qd; end 63 Moore状态机的状态机的Verilog实现实现 timescale 1ns/100ps module state4 clock, reset, out; reset, clock; output [1 0] out; reg [1 0] out; parameter //状态变量枚举状态变量枚举 stateA 4‘b0000, sta