基于FPGA的前端设计流程-CodingStyle.docVIP

  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的前端设计流程-CodingStyle

基于FPGA的前端设计流程—Coding Style 1. Verilog代码文件的命名规则:module_name.v.Data 2. 文件的头和结构:headerstructure.txt 3.ASIC可综合的Verilog语法: assign A = exp.; wire[3:0] A = exp.;//表达式可以是标量,+,-,逻辑运算,逻辑判断 wire[3:0] A = B ? exp1.: exp2.;//赋值语句 always (posedge clk or posedge rst) begin//带复位的寄存器 if(rst) A = exp1.; else if(cond.) A = exp2.; else A = exp3.;end d.always (posedge clk or posedge rst or posedge set) begin//带复位与置位的寄存器 if(rst) A = exp1.; else if(set) A = exp2.; else if(cond.) A = exp3.; else A = exp3.;end always (posedge clk or …) begin//case语句 if(rst) …; else if(cond.) …; else begin case/casez(variable1) 4’b0000: a = exp1.; 4’b0001: a = exp2.; … default: exp3; endcase end end e.always @(variable list) begin case(variable0) 4’b0000: a = exp1.; 4’b0001: a = exp2.; … default: exp3; endcase end f.instances 自定义的例元名字 (//例元的调用,采用名字映射,不要采用位置映射 .signal1(wire1), .signal2(wire2), … .signalN(wireN) ); 4.设计中的interface, 变量: 4.1 最好采用寄存器进,寄存器出 Eg1.module s_module(A,B,q,clk); input A, B, clk; output[1:0] q; reg[1:0] q; reg A_q, B_q; always @(posedge clk) begin A_q = A; B_q = B;end always @(posedge clk) begin q = A + B;end endmodule 4.2 设计的接口不要采用2-demension数组,Eg2.input[8:0] mem [15:0]; 4.3 名字的命名要用有意义的缩写,不同意义层次用”_”间隔,Eg.dn_nph_wptr 4.4 跨层次的命名关键字尽量不要重复 4.5 不要用verilog的保留字 4.6 要求处理跨时钟域问题: 对于单bit的跨时钟域,慢到快:采用两级同步时钟,快到慢:握手机制,脉冲产生电路;对于多bit的跨时钟域,采用各种异步FIFO 4.7 入大量数据流,一定要采用Data buffer 4.8 用通用接口与外设相连:fifo_base, Micro_controller_base(8051), industry standard bus(usb,pcie), on-chip bus(AMBA) 5.采用参数和define: 5.1 采用参数设计使自己的design具有更好的兼容性 Eg3.parameter width = 8; reg[width-1:0] mem; 5.2 采用define设计状态机子状态 Eg3.`define cnt0 = 2’b00; `define cnt1 = 2’b01; `define cnt2 = 2’b10; `define cnt3 = 2’b11; always @(current_state) begin case(current_state) `cnt0: next_current = `cnt1; … default: next_current = `cnt0; endcase end cur

文档评论(0)

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

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

1亿VIP精品文档

相关文档