verilog语言编写8位全加器

更新时间:2023-10-20 04:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Verilog实验报告——8位全加器

由一位全加器构成8位全加器

电科6012202023 裴佳文

一、

实验目的

用verilog语言编写由1位全加器构成8位全加器,自行编写testbench代码并在modelsim软件上进行仿真。 二、代码 1、源代码: 1位全加器:

module P1(A,B,Cin,sum,Cout); input A,B,Cin; output sum,Cout; wire s1,t1,t2,t3; xor x1(s1,A,B), x2(sum,s1,Cin); and A1(t3,A,B), A2(t2,B,Cin), A3(t1,A,Cin); or o1(Cout,t1,t2,t3); endmodule

由1位全加器构成8位全加器

module P(J,W,Psum,PCout,PCin); input [7:0] J,W; input Pcin;

output [7:0] Psum; output Pcout; wire [7:1]Ptemp; P1:

PA1(.A(J[0]),.B(W[0]),.Cin(PCin),.sum(Psum[0]),.Cout(Ptemp[1])), PA2(.A(J[1]),.B(W[1]),.Cin(Ptemp[1]),.sum(Psum[1]),.Cout(Ptemp[2])),

PA3(.A(J[2]),.B(W[2]),.Cin(Ptemp[2]),.sum(Psum[2]),.Cout(Ptemp[3])), PA4(.A(J[3]),.B(W[3]),.Cin(Ptemp[3]),.sum(Psum[3]),.Cout(Ptemp[4])), PA5(.A(J[4]),.B(W[4]),.Cin(Ptemp[4]),.sum(Psum[4]),.Cout(Ptemp[5]))

1

Verilog实验报告——8位全加器

PA6(.A(J[5]),.B(W[5]),.Cin(Ptemp[5]),.sum(Psum[5]),.Cout(Ptemp[6])) PA7(.A(J[6]),.B(W[6]),.Cin(Ptemp[6]),.sum(Psum[6]),.Cout(Ptemp[7])) PA8(.A(J[7]),.B(W[7]),.Cin(Ptemp[7]),.sum(Psum[7]),.Cout(PCout). endmodule 2、激励:

`timescale 1ns/100ps module P_tb; reg[7:0] A,B; reg CIN;

wire [7:0] SUM; wire COUT;

P ul(

.Psum(SUM), .PCout(COUT), .J(A), .W(B), .PCin(CIN) );

initial begin

A=8'd0;B=8'd0;CIN=1'b0;

#10 A=8'd20;B=8'd129;CIN=1'b1; #10 A=8'd27;B=8'd19;CIN=1'b0; #10 A=8'd157;B=8'd29;CIN=1'b0; #10 A=8'd37;B=8'd68;CIN=1'b0; #10 A=8'd11;B=8'd69;CIN=1'b0; #10 A=8'd54;B=8'd67;CIN=1'b1; #10 A=8'd211;B=8'd0;CIN=1'b0; #10 A=8'd87;B=8'd43;CIN=1'b1; #10 A=8'd23;B=8'd171;CIN=1'b0; #10 A=8'd12;B=8'd12;CIN=1'b1; #10 A=8'd112;B=8'd115;CIN=1'b0; end

endmodule 三、实验过程 1、仿真过程

2

Verilog实验报告——8位全加器

2、仿真波形

3、波形说明

3

Verilog实验报告——8位全加器

波形图中,从上至下依次为:输入加数A、输入加数B、输入进位CIN、输出进位COUT、输出和SUM。该程序实现的是A+B+CIN=SUM+COUT。 0+0+0=0; 20+129+1=150; 27+19+0=46; 157+29+0=186; 37+68+0=105; 11+69+0=80; 54+67+1=122; 211+0+0=211; 87+43+1=131; 23+171+0=194; 12+12+1=25; 112+115+0=227; 四、实验过程中碰到的问题

1、对于modelsim软件太陌生,在开始实验的时候,经常做完了上一步就忘了下一步是什么,而且对老师反复强调的很多问题也在手忙脚乱间给忽略了,比如,实验一定要在计算机某一个盘里建立一个独立的文件夹,每次都是实验进行到这一步的时候才想起来还没有建这个文件夹,造成很多返工的情况。

2、开始的时候,由于C语言的习惯,程序的注解全部是用汉字写的,还有在实验刚开始时,将独立文件夹建在桌面上,使得程序在运行过程中出现了大量的汉字,最终结果就是程序莫名其妙的报错,还完全找不到错在哪里,不注重细节导致浪费大量时间。 四、实验心得

本次试验带我进入了verilog的大门,虽然磕磕绊绊,但是我发现我还是挺喜欢这样一个过程,我希望自己能认真努力,让自己的学习更进一步,让之后的实验能顺利一点。

4

Verilog实验报告——8位全加器

`timescale 1ns/1ns module taxt; reg [8:1]FA,FB; reg FCin; wire [8:1]FSum; wire Fout; initial begin

FA[8:1]=8'b01001110; FB[8:1]=8'b01101111; FCin=1; #3

FA[8:1]=8'b01111101; FB[8:1]=8'b01000111; FCin=0; #3

FA[8:1]=8'b01010111; FB[8:1]=8'b00011110; FCin=0; #3 $stop; end

P taxt (FA,FB,FSum,Fout,FCin); endmodule

5

本文来源:https://www.bwwdw.com/article/thbf.html

Top