北邮22级信通院数电:Verilog-FPGA(6)第六周实验:全加器(关注我的uu们加群咯~)

北邮22信通一枚~

跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章

持续关注作者 迎接数电实验学习~

获取更多文章,请访问专栏:

北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客

作者建群啦!!!欢迎关注我的uu们加群交流哦~

目录

[一.verilog 代码 add.v](#一.verilog 代码 add.v)

二.管脚分配

三.实验效果

3.1说明

[​编辑 3.2实验操作流程](#编辑 3.2实验操作流程)

3.3动画效果


一.verilog 代码 add.v

复制代码
module add_initial(a,b,ci_1,si,ci);
 input a,b,ci_1;
 output si,ci;
 
 wire p,g;
 
 assign p=a^b;
 assign g=a&b;
 assign si=p^ci_1;
 assign ci=g|(p&ci_1);
 
endmodule



module my_add(a,b,s,ci,cout);
	input [3:0] a;
	input [3:0] b;
	input ci;
	output [3:0] s;
	output cout;
	wire c1,c2,c3;
	
	add_initial u0(.a(a[0]),.b(b[0]),.ci_1(ci),.si(s[0]),.ci(c1));
	add_initial u1(.a(a[1]),.b(b[1]),.ci_1(c1),.si(s[1]),.ci(c2));
	add_initial u2(.a(a[2]),.b(b[2]),.ci_1(c2),.si(s[2]),.ci(c3));
	add_initial u3(.a(a[3]),.b(b[3]),.ci_1(c3),.si(s[3]),.ci(cout));
endmodule


module add(sw,cal,key_confire_2,key_confire_3,
		seg_led_1,seg_led_2,clk,rst_n);
input clk;
input rst_n;
input [3:0] sw;
input cal;
input key_confire_2;
input key_confire_3;

output reg [8:0] seg_led_1;
output reg [8:0] seg_led_2;

reg [8:0] seg [15:0];
initial 
	begin
		seg[0]=9'h3f;
		seg[1]=9'h06;
		seg[2]=9'h5b;
		seg[3]=9'h4f;
		seg[4]=9'h66;
		seg[5]=9'h6d;
		seg[6]=9'h7d;
		seg[7]=9'h07;
		seg[8]=9'h7f;
		seg[9]=9'h6f;
		seg[10]=9'h77;
		seg[11]=9'h7c;
		seg[12]=9'h39;
		seg[13]=9'h5e;
		seg[14]=9'h79;
		seg[15]=9'h71;
	end

reg [3:0] a;
reg [3:0] b;
reg iscal;

wire [3:0]ans;
wire cout;
wire ci;
always@(*)begin
if(rst_n==0)
	begin
		a=4'b0000;
		b=4'b0000;
		iscal=0;
	end
if(key_confire_2==0)
	begin 
		a=sw;
	end
if(key_confire_3==0)
	begin 
		b=sw;
	end
if(cal==0)
	begin 
		iscal=1;
	end
end

my_add u(.a(a),.b(b),.s(ans),.ci(ci),.cout(cout));
always@(posedge clk)
begin 
	if(iscal)
		begin
			seg_led_1<=seg[ans];
			seg_led_2<=seg[cout];
		end
	else
		begin 
			seg_led_1<=seg[a];
			seg_led_2<=seg[b];
		end
end
endmodule

二.管脚分配

三.实验效果

3.1说明

3.2实验操作流程

1.按下复位键,两个数码管同时显示数字0;

2.第一次拨动四位二进制拨码开关,输入第一个加数;

3.按下"第一个数码管的输入确认键",第一个数码管由原先的数字"0"变为你输入的第一个加数(H);

4.第二次拨动四位二进制拨码开关,输入第二个加数;

5.按下"第二个数码管的输入确认键",第二个数码管由原先的数字"0"变为你输入的第二个加数(H);

6.按下calculation计算结果键,两位数码管输出最终结果(H)。

3.3动画效果

动画效果参考视频链接:

数电第六周实验全加器_哔哩哔哩_bilibili

相关推荐
lzb_kkk7 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
FPGA之旅10 小时前
FPGA从零到一实现FOC(一)之PWM模块设计
fpga开发·dubbo
XMAIPC_Robot11 小时前
基于ARM+FPGA的光栅尺精密位移加速度测试解决方案
arm开发·人工智能·fpga开发·自动化·边缘计算
cycf11 小时前
状态机的设计
fpga开发
szxinmai主板定制专家14 小时前
【精密测量】基于ARM+FPGA的多路光栅信号采集方案
服务器·arm开发·人工智能·嵌入式硬件·fpga开发
千宇宙航21 小时前
闲庭信步使用SV搭建图像测试平台:第三十二课——系列结篇语
fpga开发
千宇宙航1 天前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
小眼睛FPGA2 天前
【RK3568+PG2L50H开发板实验例程】FPGA部分/紫光同创 IP core 的使用及添加
科技·嵌入式硬件·ai·fpga开发·gpu算力
forgeda2 天前
如何将FPGA设计验证效率提升1000倍以上(2)
fpga开发·前沿技术·在线调试·硬件断点·时钟断点·事件断点
9527华安2 天前
FPGA实现40G网卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架构,提供工程源码和技术支持
fpga开发·架构·网卡·ethernet·nic·40g·pcie4c