<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 實(shí)驗22 4位串行累加器

實(shí)驗22 4位串行累加器

作者: 時(shí)間:2023-10-16 來(lái)源:電子森林 收藏

實(shí)驗目的

  • (1)熟悉和掌握開(kāi)發(fā)流程和軟件使用方法;
  • (2)通過(guò)實(shí)驗了解的意義及原理方法
  • (3)掌握使用語(yǔ)言基于實(shí)現的原理及實(shí)現方法

實(shí)驗任務(wù)

設計一個(gè)4位串行,電路原理框圖如圖所示,在開(kāi)關(guān)K處設置串行輸入數據,在CP端輸入8個(gè)脈沖,將完成一次,兩個(gè)四位串行數據的相加,結果存D-A中。

本文引用地址:http://dyxdggzs.com/article/202310/451566.htm

實(shí)驗原理

根據上述電路框圖,可以分割系統任務(wù)。

累加器是一個(gè)具有特殊功能的二進(jìn)制寄存器,可以存放計算產(chǎn)生的中間結果,省去了計算單元的讀取操作,能加快計算單元的速度。串行累加器是由移位寄存器和全加器組成的一個(gè)求和電路。
由題目給出的要求可以分析組合邏輯電路一是一個(gè)全加器電路;組合邏輯電路二和組合邏輯電路三加上JK觸發(fā)器組成了加法超前進(jìn)位電路,D-A是儲存結果的寄存器。

頂層模塊由4個(gè)模塊組成:

Shift U1模塊;輸入的串行寄存器,把輸入的串行數據轉換成并行數據寄存

Adder U2模塊:一位的二進(jìn)制全加器模塊,輸入的進(jìn)位信號由超前進(jìn)位邏輯產(chǎn)生

Ahead U3模塊:超前進(jìn)位邏輯,根據題目要求用JK觸發(fā)器產(chǎn)生超前進(jìn)位

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;              //全加器超前進(jìn)位信號
 wire sumout;           //全加器輸出 
 assign sum = sumer;    //累加結果輸出
 shift u1               //移位寄存器,把數據存入加數寄存器
 (
 .clk(clk),           
 .rst(rst),			 
 .datain(datain),  
 .dataout(adder) 	
 );
 adder1 u2              //全加器,兩個(gè)寄存器的最低位相加,進(jìn)位由超前進(jìn)位邏輯輸出
 (
 .a(sumer[0]),           
 .b(adder[0]),
  .cin(cin),.sum(sumout),     
  .cout());ahead u3              //超前進(jìn)位邏輯,產(chǎn)生進(jìn)位信號
  (
  .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等模塊,其中全加器和移位寄存器的源碼文件在前面章節有介紹
我們看看超前進(jìn)位邏輯的源碼ahead.v

 //   Description     :   超前進(jìn)位邏輯產(chǎn)生 
 //				JK觸發(fā)器:Qi+1=J!Qi+!KQi
 //				全加器進(jìn)位: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觸發(fā)器
 (						
 .clk(clk),.j(j),.k(k),.rst(rst),.set(),	
 .q(q),.qb()
 );
 assign j = a&b;        //根據推導得到J,K與加法器輸入信號邏輯關(guān)系
 assign k = ~(a|b);
 endmodule

仿真文件accum4_tb.v

 `timescale 1ns/100ps    //仿真時(shí)間單位/時(shí)間精度        
 module accum4_tb(); 
 reg    clk,rst,datain; 
 reg [7:0] data;
 wire   [3:0]sum; //初始化過(guò)程塊
 initial
 begin
	clk = 0;
	rst = 0;  
	data <= 8'b00100001;   //串行輸入數據初值
	#25                      
	rst = 1;               
	end
	always #10 clk = ~clk;      
	always @(posedge clk)       //產(chǎn)生串行輸入數據
	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

實(shí)驗步驟

  1. 打開(kāi),建立工程。
  2. 新建設計文件,并鍵入設計代碼,包括添加需要調用的模塊文件。
  3. 根據仿真教程,實(shí)現對本工程的仿真,驗證仿真結果是否與預期相符。
  4. 如果仿真無(wú)誤,構建并輸出編程文件,燒寫(xiě)至的Flash之中。
  5. 觀(guān)察輸出結果。

仿真結果和實(shí)驗現象

仿真結果如下圖所示:

仿真文件的串行輸入數據也是靠串行轉并行移位寄存器輸入,所以累加器計算的時(shí)鐘要順延8個(gè)clock得到結果??梢孕薷姆抡嫖募械拇休斎霐祿踔凋炞C累加器結果。



關(guān)鍵詞: 累加器 FPGA Lattice Diamond Verilog HDL

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>