串行加法器设计

该博客介绍了如何利用Verilog设计一个8位串行加法器,包括移位寄存器、一位加法器和状态机。设计中包含了三个主要部分:shift8bit.v、adder.v和top_adder.v,以及测试模块tb_top_adder.v。通过VCS编译并仿真验证了加法器的功能。
摘要由CSDN通过智能技术生成

主要组成

本案例是为了设计一个8位的串行加法器,其包括:
移位寄存器 shift8bit.v
一位加法器,状态机设计 adder.v

顶层设计 top_adder.v
测试文档 tb_top_adder.v

主要设计思路来源于《数字逻辑基础与Verilog设计》

移位寄存器代码

`timescale 1ns/1ps

module shift8bit(Clk,Rst_n,Ena,Data_in,Data_set,Q);

input Clk,Rst_n,Ena,Data_in;
input [7:0] Data_set;
output reg [7:0] Q;

always@(posedge Clk or negedge Rst_n)begin
	if(~Rst_n)
		Q <= Data_set;
	else if (Ena)
		Q <= {Data_in,Q[7:1]};
end


endmodule

加法器代码

`timescale 1ns/1ps
module adder(Clk,Rst_n,A,B,S,Run);

input Clk,Rst_n,A,B;
output S;
output reg Run;

reg [2:0] cnt;// counter n= 0~7 ; 
reg cout;

parameter G=0,H=1;
reg state,next_state;

always@(*)begin
	case(state)
		G:next_state=(A&B)?H:G;
		H:next_state=(A|B)?H:G;
		default:next_state = G;
	endcase
end

assign S = A^B^cout;

always@(posedge Clk or negedge Rst_n) begin
	state &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值