- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 中小学生心理健康诊断测验MHT(附测试量表及评分细则).docx VIP
- HG-T 3866-2008 硫化橡胶 压缩耐寒系数的测定.pdf VIP
- 2025年内蒙古公务员考试《申论》真题及答案 .pdf VIP
- 第12课 汉武帝巩固大一统王朝 课件(共25张PPT)(含音频+视频).pptx VIP
- 中电联定额〔2015〕162号对于前期工作费等费用标准的的通知.docx
- 履带吊租赁合同.pdf VIP
- 《中国饮食文化》教学课件—06中国馔肴文化与特色筵宴设计.pptx VIP
- 呼吸内科病案分析.ppt VIP
- 肌骨康复:腰痛康复PPT课件.pptx
- 2023-2024学年河南省南阳市卧龙区九年级(上)期中数学试题(含解析).doc VIP
原创力文档


文档评论(0)