硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5166|回复: 1
收起左侧

Verilog经典实例分析(感觉这是学习verilog最快捷的方法了)

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2013-1-14 21:38:05 | 显示全部楼层 |阅读模式
说明:网上有一个《Verilog的135个经典实例分析》,感觉这个资料非常的不错,自己先潜下心来
           把这个135个例子好好学一下。
           王金明:《Verilog HDL程序设计教程》  
4位加法器
  1. module verilog_prj(cout,sum,ina,inb,cin);
  2.     output[3:0] sum;
  3.     output cout;
  4.     input[3:0] ina,inb;
  5.     input cin;
  6.     assign {cout,sum}=ina+inb+cin;        
  7. endmodule
复制代码

(1) {} 位拼接运算符
{信号1的某几位,信号2的某几位,..,..,信号n的某几位}
即把某些信号的某些位详细地列出来,中间用逗号分开,最后用大括号括起来表示一个整体信号。见
下例:
{a,b[3:0],w,3 ’ b101}
也可以写成为
{a,b[3],b[2],b[1],b[0],w,1 ’ b1,1’ b0,1’ b1}
RTL  Viewer
2.jpg
功能仿真(仿真工具ModelSim SE 6.5)
  1. timescale 1ns/1ns
  2. module adder_tp;               //测试模块的名字
  3. reg[3:0] a,b;                    //测试输入信号定义为reg型
  4. reg cin;
  5. wire[3:0] sum;                    //测试输出信号定义为wire型
  6. wire cout;
  7. integer i,j;

  8. verilog_prj adder(cout,sum,a,b,cin);  //调用测试对象
  9. always  #5 cin=~cin;           //设定cin的取值

  10.     initial
  11.     begin
  12.     a=0;b=0;cin=0;
  13.     for(i=1;i<16;i=i+1)
  14.     #10   a=i;                     //设定a的取值
  15.     end

  16.     initial
  17.     begin
  18.     for(j=1;j<16;j=j+1)
  19.     #10   b=j;                 //设定b的取值
  20.     end

  21.     initial                        //定义结果显示格式
  22.     begin
  23.     $monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum);
  24.     #160  $stop;
  25.     end   
  26. endmodule
复制代码

1.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2013-1-14 22:12:18 | 显示全部楼层
135实例的源码和pdf文档
verilog hdl教程135例.zip (179 KB, 下载次数: 329)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 03:40 , Processed in 0.038153 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表