搜索

经典Verilog100多个代码案例

发表时间:2023-07-29 13:17

Verilog语言全称为Verilog HDL,在不引起混淆的情况下,一般简称Verilog,目前是在FPGA及数字IC设计中应用最为广泛的一种硬件描述语言。与VHDL,System Verilog HDL 并列三大硬件描述语言。现在分享大家一些经典的verilog的代码案例。

【例1.14 位全加器

module adder4(cout,sum,ina,inb,cin);

output[3:0] sum;

output cout;

input[3:0] ina,inb;

input cin;

assign {cout,sum}=ina+inb+cin;

endmodule

【例1.24 位计数器

module count4(out,reset,clk);

output[3:0] out;

input reset,clk;

reg[3:0] out;

always @(posedge clk)

begin

if (reset)   out<=0;         //同步复位

else        out<=out+1;     //计数

end

endmodule


【例1.3 4 位全加器的仿真程序

`timescale 1ns/1ns

`include "adder4.v"

module adder_tp;

reg[3:0] a,b;

reg cin;

wire[3:0] sum;


   //测试模块的名字

//测试输入信号定义为 reg

//测试输出信号定义为 wire


wire cout;

integer i,j;

adder4 adder(sum,cout,a,b,cin);   //调用测试对象

always #5 cin=~cin;             // cin 的取值

initial

begin

a=0;b=0;cin=0;

for(i=1;i<16;i=i+1)

#10   a=i;                        //设定 a 的取值

end


initial

begin

for(j=1;j<16;j=j+1)

#10   b=j;                          //设定 b 的取值

end

initial                              //定义结果显示格式

begin

$monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum);

#160 $finish;

end

endmodule

【例1.4 4 位计数器的仿真程序

`timescale 1ns/1ns

`include "count4.v"


module coun4_tp;

reg clk,reset;

wire[3:0] out;

parameter DELY=100;


//测试输入信号定义为 reg

//测试输出信号定义为 wire


count4 mycount(out,reset,clk);       //调用测试对象


always #(DELY/2) clk = ~clk;

initial

begin

clk =0; reset=0;


//产生时钟波形

//激励信号定义


#DELY

reset=1;

#DELY

reset=0;

#(DELY*20) $finish;

end

//定义结果显示格式

initial $monitor($time,,,"clk=%d reset=%d out=%d", clk, reset,out);

endmodule

共计84页哦,需要的同学加老师微信领取



声明:所有文件均来源于网络,如有侵权请联系客服删除,谢谢!
Contact Us
联系我们

联系电话:17788028798 联系地址:西安市碑林区文艺路街道友谊东路81号天伦盛世2栋2509室

扫扫码添加微信
姓名
*
手机
*
提交
关注公众号
首页            热门课程              实战课程             文章问答              
▇▇▇▇▇