一些VERILO例题.docVIP

  • 5
  • 0
  • 约13.7万字
  • 约 26页
  • 2016-12-03 发布于河南
  • 举报
一些VERILO例题

Verilog HDL描述例子 1. 组合电路的例子 例1 4选1数据选择器(if叙述)。 module mux (a, b, c, d, s, o); ??input a,b,c,d; ??input [1:0] s; ??output o; ??reg o; ??always @(a or b or c or d or s) ??begin ????if (s == 2b00) o = a; ????else if (s == 2b01) o = b; ????else if (s == 2b10) o = c; ????else o = d; ??end endmodule 例2具有三态缓冲4选1数据选择器。 module mux (a, b, c, d, s, o); input a,b,c,d; input [3:0] s; output o; assign o = s[3] ? a :1bz; assign o = s[2] ? b :1bz; assign o = s[1] ? c :1bz; assign o = s[0] ? d :1bz; endmodule 例3 采用case语句描述的3-8译码器,输出高电平有效。 module mux (sel, res); ??input [2:0] sel; ??output [7:0] res; ??reg [7:0] res; ??always @(sel or res) ??begin ????case (sel) ??????3b000 : res = 8 ??????3b001 : res = 8 ??????3b010 : res = 8 ??????3b011 : res = 8 ??????3b100 : res = 8 ??????3b101 : res = 8 ??????3b110 : res = 8 ??????default : res = 8 ????endcase ??end endmodule 例4 进位输入与输出的8位加法器 module adder(A, B, CI, SUM, CO); input CI; input [7:0] A; input [7:0] B; output [7:0] SUM; output CO; wire [8:0] tmp; ??assign tmp = A + B + CI; ??assign SUM = tmp [7:0]; ??assign CO = tmp [8]; endmodule 例5 8位比较器 module compar(A, B, CMP); input [7:0] A; input [7:0] B; output CMP; assign CMP = A = B ? 1b1 : 1b0; endmodule 2 时序电路的例子 例1 上升沿触发的具有异步置位与时钟使能端的4位寄存器 module li5 (C, D, CE, PRE, Q); input C, CE, PRE; input [3:0] D; output [3:0] Q; reg [3:0] Q; always @(posedge C or posedge PRE) begin if (PRE) Q = 4b1111; else if (CE) Q = D; end endmodule 例2 具有清除端的4位加法计数器。 module li7 (C, CLR, Q); input C, CLR; output [3:0] Q; reg [3:0] tmp; always @(posedge C or posedge CLR) begin if (CLR) tmp = 4b0000; else tmp = tmp + 1b1; end assign Q = tmp; endmodule 例3 具有同步置位的4位减法计数器。 module li8 (C, S, Q); inpu

文档评论(0)

1亿VIP精品文档

相关文档