FPGA HDL高级设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FPGA应用 基于Xilinx的HDL高级设计 面向硬件的设计思维 并行执行 时钟是程序的执行控制器 程序的可综合性 并行执行 module feizusefuzhi(clk,reset,a,b); input,clk,reset; input [3:0] a; input [3:0] b; output[3:0] temp1,temp2,b; always @(posedge clk)begin if (!reset)begin tempa1 = 0; tempa2 = 0; b = 0; end else begin tempa1 = a+1’b1; tempa2 = tempa1 + 1’b1; b = tempa2 + 1’b1; end end endmodule 可综合设计 Verilog HDL是面向HDL仿真的,可综合是Verilog HDL的子集(以Synplify Pro为例) 线网类型:wire,tri,supply1,supply0 寄存器类型reg,integer,time 连续赋值 门原型和模块例化 always,task,function input,output,inout 所有运算符 可综合设计 Verilog HDL是面向HDL仿真的,可综合是Verilog HDL的子集(以Synplify Pro为例) 行为语句: if-else-if,case,casex,casez, for,repeat,while,forever,begin-end,fork-join 过程赋值:阻塞赋值(=),非阻塞赋值(=) 编译器指令: ’define,’ifdef,’else,’endif,’include 避免意外的锁存器 //意外锁存器 always @(a or data_in) begin if (a) begin data_out = data_in; end end 同步电路设计优点 有效避免毛刺影响,提高可靠性; 简化时序分析过程; 减少工作环境对设计的影响;同步电路只要求时钟和数据沿相对稳定, 同异步电路比较示例 //同步复位 module test(clk,reset,s); input clk; input reset; output s; reg s; always @(posedge clk) begin if (!reset) s = 0; else s = s+1; end endmodule 异步电路缺点示例 module as_mode1(clk,a1,a2,y,yout); input clk; input a1,a2; output y,yout; reg yout; assign y = a1 a2 always @(posedge clk)begin yout = y; end endmodule 同步电路设计准则 单时钟 单时钟边沿 避免门控时钟 混合时钟边沿示例 module hunhe(clk,din,d1,dout); input clk; input [7:0] din; output [7:0] d1; output [7:0] dout; reg [7:0] d1,dout; always @(negedge clk) begin d1 = din; end always @(posedge clk) begin dout = din; end endmodule 良好HDL代码风格 逻辑复用与复制 复用能缩减硬件规模,复制能提高性能 逻辑结构 链状结构 树状结构 If,case的使用 关键路径信号处理 避免意外锁存器 使用流水线结构 If,case比较示例(多路选择器) module sdata_if(clk,reset,x,s,y); input clk; input reset; input [3:0] x; input [1:0] s; output y; reg y; always @(posedge clk) begin if (!reset) y = 0; else begin if (s == 2’b00) y = x[0]; else if (s==2’b01) y = x[1]; else if (s==2’b10) y = x[2]; else y = x[3]; end endmodule always块关键路径提取 a

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档