METech 版 (精华区)

发信人: alphame (spring是春天), 信区: METech
标  题: Verilog简明教程 3 (转载) 
发信站: 哈工大紫丁香 (2003年12月29日18:07:55 星期一), 站内信件

* 计数器的verilog描述如下:
module count(in,set,cp,out) ;//此计数器,在cp的上升沿将输入赋给输出,在cp的上升
沿使输出加一
input [15:0] in;
input set,cp;
output [15:0] out;
reg [15:0] out;
always @ (posedge set)
 #1 out = in;
always @(posedge cp)
 #1 out = out+1;  //verilog容许一个信号同时出现在等号两端,只要它是reg类型的
endmodule
* latch的描述如下:
always @(clk or d)
    if (clk) q = d;
* 时序机的verilog描述如下:


always @(posedge CLK)  //D是下一个状态,Q是当前状态,e1,e2是输入,a,b是输出
 Q=D;
always @(Q or othercase) begin //当Q变化或输入e1,e2变化时D要相应变化
 D = Q; //note 1
 a = 0;
 b = 0;
 ......
 case(Q)
  q1:begin
   q1 action;
   if(e1)D=d1;
   if(e2)D=d2;
   else D=d3;
   a = 1; //note 2
   end
  q2:begin
   b = 1;
   ......
   end
  default:begin
   a = 0;
   b = 0;


   ......
   end
 end
---annotations---
 note 1:
  This is a custom expression,after reset,D should be equal to Q;
 note 2:
  In this state machine,a is only equal to 1 at state q1,in
  other state,a is equal to 0;
* RAM的verilog描述如下:
module ram(din,ain,dout,aout,rd,wr);//这是一个双口RAM,分别有:
     //输入端:输入地址 ain;输入数据 din;上升沿有效的写信号 wr;
     //输出端:输出地址 aout;输出数据 dout;高电平有效的读信号 rd;
  inout [7:0] din;
  input [7:0] ain,aout;
  input rd,wr;
  output [7:0] dout;
  reg [7:0] memory [0:255];   //请注意这是存储阵列的描述方法,描述了一个共有2
56个字的存储阵列,
      //每个字是8位
  assign dout = rd ? memory[aout] : 8'bz; //"assign"关键字表示并行赋值语句的
开始


      //"?"运算符的作用和在C语言中一样
      //"8'bz"是一个常量,表示一个字节的高阻态,其中
      //8表示长度是8bit,"'"是固定分割符,"b"表示后面的数据是以比特形式给出的,
 
      //"z"表示高阻;
      //举例:4'ha表示长4bit的数"1010"
      //类似的还可举出5'b10111,6'o33等等
  always @(posedge wr)
 memory[ain] = din;
endmodule
* 模块引用
假设在前面(可以是别的模块)定义了module ram(din,ain,dout,aout,rd,wr),则引用此
模块时只需写
ram myram(din_in_map,ain_in_map,dout_in_map,aout_in_map,rd_in_map,wr_in_map)
;
 //其中"ram"是所引用的module名,"myram"是你起的instance名,
 //"din_in_map"等等是图中的节点名,和器件(module)中的"din..."进行"虚实结合";
* 预编译
类似C语言,只需写
`include "<pathname:filename>",反上撇号"`"是verilog的预编译符,类似C中的"#".

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 218.104.33.3]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.517毫秒