实验22 4位串行累加器

发布时间:2023-10-16  

实验目的

  • (1)熟悉和掌握开发流程和软件使用方法;
  • (2)通过实验了解的意义及原理方法
  • (3)掌握使用语言基于实现的原理及实现方法

实验任务

设计一个4位串行,电路原理框图如图所示,在开关K处设置串行输入数据,在CP端输入8个脉冲,将完成一次,两个四位串行数据的相加,结果存D-A中。

本文引用地址:

实验原理

根据上述电路框图,可以分割系统任务。

累加器是一个具有特殊功能的二进制寄存器,可以存放计算产生的中间结果,省去了计算单元的读取操作,能加快计算单元的速度。串行累加器是由移位寄存器和全加器组成的一个求和电路。
由题目给出的要求可以分析组合逻辑电路一是一个全加器电路;组合逻辑电路二和组合逻辑电路三加上JK触发器组成了加法超前进位电路,D-A是储存结果的寄存器。

顶层模块由4个模块组成:

Shift U1模块;输入的串行寄存器,把输入的串行数据转换成并行数据寄存

Adder U2模块:一位的二进制全加器模块,输入的进位信号由超前进位逻辑产生

Ahead U3模块:超前进位逻辑,根据题目要求用JK触发器产生超前进位

Shift U4模块:一位全加器输出再移位输出保存在4位寄存器中

建模描述

设计文件accum4.v

 module accum4
 (
 input wire datain,     //数据输入
 input wire clk,rst,    //脉冲和复位输入信号
 output wire [3:0] sum  //累加结果
 );
 wire [3:0] adder;      //寄存器1,存储输入加数内容
 wire [3:0] sumer;      //寄存器2,存储被加数内容
 wire cin;              //全加器超前进位信号
 wire sumout;           //全加器输出 
 assign sum = sumer;    //累加结果输出
 shift u1               //移位寄存器,把数据存入加数寄存器
 (
 .clk(clk),           
 .rst(rst),			 
 .datain(datain),  
 .dataout(adder) 	
 );
 adder1 u2              //全加器,两个寄存器的最低位相加,进位由超前进位逻辑输出
 (
 .a(sumer[0]),           
 .b(adder[0]),
  .cin(cin),.sum(sumout),     
  .cout());ahead u3              //超前进位逻辑,产生进位信号
  (
  .a(sumer[0]),.b(adder[0]),.clk(clk),.rst(rst),
  .q(cin)
  ); 
shift u4              //移位寄存器,将全加器结果存入被加数寄存器
(
.clk(clk),           
.rst(rst),			  
.datain(sumout),  
.dataout(sumer) 	  
);
endmodule

顶层文件里面例化了shift.v、adder1.v、ahead.v等模块,其中全加器和移位寄存器的源码文件在前面章节有介绍
我们看看超前进位逻辑的源码ahead.v

 //   Description     :   超前进位逻辑产生 
 //				JK触发器:Qi+1=J!Qi+!KQi
 //				全加器进位:Ci+1=AiBi+(Ai+Bi)Ci=AiBi!Ci+!(Ai+Bi)Ci
 //				推导得出:J=AiBi,K=!(Ai+Bi)
 //********************************************************
 module ahead
 (
 input wire a,b,clk,rst,
 output wire q
 );
 wire j,k;jk_ff  u1              //例化JK触发器
 (						
 .clk(clk),.j(j),.k(k),.rst(rst),.set(),	
 .q(q),.qb()
 );
 assign j = a&b;        //根据推导得到J,K与加法器输入信号逻辑关系
 assign k = ~(a|b);
 endmodule

仿真文件accum4_tb.v

 `timescale 1ns/100ps    //仿真时间单位/时间精度        
 module accum4_tb(); 
 reg    clk,rst,datain; 
 reg [7:0] data;
 wire   [3:0]sum; //初始化过程块
 initial
 begin
	clk = 0;
	rst = 0;  
	data <= 8'b00100001;   //串行输入数据初值
	#25                      
	rst = 1;               
	end
	always #10 clk = ~clk;      
	always @(posedge clk)       //产生串行输入数据
	datain
	if(!rst)
		begin
			datain <= 0;
		end
	else
		begin
			data <={0,data[7:1]};
			datain <= data[0];
		end
 //module调用例化格式
 accum4   u1 
 (
		.clk	(clk),     
		.rst	(rst), 
		.datain (datain),
		.sum	(sum)   
		);
		endmodule

实验步骤

  1. 打开,建立工程。
  2. 新建设计文件,并键入设计代码,包括添加需要调用的模块文件。
  3. 根据仿真教程,实现对本工程的仿真,验证仿真结果是否与预期相符。
  4. 如果仿真无误,构建并输出编程文件,烧写至的Flash之中。
  5. 观察输出结果。

仿真结果和实验现象

仿真结果如下图所示:

仿真文件的串行输入数据也是靠串行转并行移位寄存器输入,所以累加器计算的时钟要顺延8个clock得到结果。可以修改仿真文件中的串行输入数据初值验证累加器结果。

文章来源于:电子产品世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    通过PSW来取得。 累加器实际上就是存放操作数或者中间结果的一个寄存器,是一个8位的寄存器,它的值可以通过指定来修改,是比较繁忙的一个寄存器,如果说大家熟悉汇编语言的话,你会发现在数据传送指令当中,绝大......
    ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。寄存器B主要用于乘法和除法操作。标志......
    --累加器A的奇偶标志位,如果累加器A的8位的模2和为1(奇),则P=1;否则P=0。由于P总是表示A的奇偶性,随着A的内容变化的,所以一个值写入PSW的P位的值不变。 RS1、RS0--指示......
    器对中。若OV=0,则说明乘积没有超过255,乘积只在累加器A中。   除法指令,OV=1,表示除数为0,运算不被执行。否则OV=0。   PSW.0(P) 奇偶校验位。声明累加器A的奇偶性,每个......
    及布尔处理器。累加器ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。寄存器B主要......
    的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。 51系列的另一个优点是乘法和除法指令,这给编程也带来了便利。八位除以八位的......
    结果为A-CY-R2。   b) 减一   例如:DEC A A自减一。   3) 乘法   乘法运算之后第八位放在累加器A中,高八位放在寄存器中。   例如:(A)= 50H,(B)= A0H。执行指令 MUL......
    DELAY ;延时 MOV A,#0FEH ;11111110 赋给累加器A,累加器A就相当于c语言中的一个临时变量,临时的寄存器。 SETB C ;把进位标志位C置为1,它就相当于给八位加上了一位,这个......
    读程序存储器中的数据表格的指令,均采用基址寄存器加变址寄存器间接寻址方式。 (1)MOVC A,@A+PC 以PC作基址寄存器,A的内容作为无符号整数和PC中的内容(下一条指令的起始地址)相加后得到一个16位的地址,该地址指出的程序存储单元的内容送到累加器......
    将其控制的功能部件设为不同工作方式,读取某些位的值,可以了解相应功能部件的工作状态;通用型特殊功能寄存器主要用于运算、寻址和反映运算结果状态。 下面介绍一些通用型特殊功能寄存器。 (1)累加器(ACC......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>