主要组成
本案例是为了设计一个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 &