[工学]北大数字集成电路课件--22_Verilog的编写风格.pptVIP

  • 0
  • 0
  • 约1.07万字
  • 约 33页
  • 2018-02-28 发布于浙江
  • 举报

[工学]北大数字集成电路课件--22_Verilog的编写风格.ppt

[工学]北大数字集成电路课件--22_Verilog的编写风格

第22章 Coding Styles for Synthesis if 语句 if语句 case语句 晚到达信号处理 晚到达的是数据信号 晚到达的是数据信号 晚到达的是控制信号 晚到达的是控制信号 if-case嵌套语句 if-case嵌套语句 if-case嵌套语句—修改后 if-case嵌套语句—修改后 逻辑构造块的编码格式 3-8译码器 译码器 优先级编码器—高位优先 优先级编码器 归约XOR 归约XOR 归约XOR 高性能编码技术 高性能编码技术 高性能编码技术 高性能编码技术 高性能编码技术 高性能编码技术 其它要注意的问题 不要产生不需要的latch 敏感表要完整 非结构化的for循环 资源共享 括号的作用 * if语句和case语句的编码风格 if语句和case语句中晚到达信号的处理 逻辑块的编码风格 高性能编码技术 其它问题 主要内容: module single_if(a, b, c, d, sel, z); input a, b, c, d; input [3:0] sel; output z; reg z; always @(a or b or c or d or sel) begin if (sel[3]) z = d; else if (sel[2]) z = c; else if (sel[1]) z = b; else if (sel[0]) z = a; else z = 0; end endmodule module mult_if(a, b, c, d, sel, z); input a, b, c, d; input [3:0] sel; output z; reg z; always @(a or b or c or d or sel) begin z = 0; if (sel[0]) z = a; if (sel[1]) z = b; if (sel[2]) z = c; if (sel[3]) z = d; end endmodule 例1.1a 单个 if 语句 例1.1b 多重 if 语句 注意代码的优先级 module case1(a, b, c, d, sel, z); input a, b, c, d; input [3:0] sel; output z; reg z; always @(a or b or c or d or sel) begin casex (sel) 4’b1xxx: z = d; 4’bx1xx: z = c; 4’bxx1x: z = b; 4’bxxx1: z = a; default: z = 1’b0; endcase end endmodule casex具有使用无关项的优点,不用列出sel的所有组合。 例1.2 case 语句 设计时通常知道哪一个 信号到达的时间要晚一些。这些信息可用于构造HDL,使到达晚的信号离输出近一些。 下面的例子中,针对晚到达信号重新构造if和case语句,以提高逻辑性能。 顺序if语句可以根据关键信号构造HDL。在例1.1a 中,输入信号d处于选择链的最后一级,也就是说d最靠近输出。 假如信号b_is_late是晚到达信号,我们就要重新构造例1.1a使其最优化。 module mult_if_improved(a, b_is_late, c, d, sel, z); input a, b_is_late, c, d; input [3:0] sel; output z; reg z, z1; always @(a or b_is_late or c or d or sel) begin z1 = 0;

文档评论(0)

1亿VIP精品文档

相关文档