硬件电路设计报告总结

前言

  • 本科阶段,单纯以为硬件电路开发就是画画电路图,焊焊板子,跑跑程序等等…随着学习的深入,逐渐发现,硬件电路的开发也有一套严谨有序的开发流程。

  1. 需求分析是硬件电路设计的第一步,需要什么样的功能,功能实现的指标是我们首要考虑的。指标越高,所需要的成本也就越高。硬件电路设计的一个准则就是在性能和成本中寻求平衡。
  2. 设计算法,进行算法仿真。Matlab以其强大的数学运算能力为我们的科研生活带来了极大的便利。
  • 使用matlab进行波形,首先得验证我们使用的方法是否正确,我们先用matlab产生一个频率为1MHz的,来测试我们用以进行波形分析的代码!
clear;
Fs=2E7;
F=1E6;
N=60;
n=0:N-1;
t=n/Fs;
x=sin(2*pi*F*t);
y=fft(x,N);
y_abs=abs(y);
y1=abs(20*log10(y_abs));
y2=20*log10(y_abs);
f=(0:N-1)*Fs/N;
subplot(2,2,1:2),stem(t,x);
subplot(2,2,3),stem(f(1:N/2),y_abs(1:N/2));
subplot(2,2,4),stem(f(1:N/2),y2(1:N/2));


[外链图片转存中…(img-c990x779-1648537457579)]

 1. 正弦信号的频率为1MHz,采样频率为20MHz,60/(20/1)=3个整周期的采样点。
 2.  频谱图和增益图满足工程需求(噪声被压制在-300dB以下),所以可以用此方法进行后续的波形分析。

3.硬件电路仿真。以FPGA为例,芯片厂商都为自家的芯片开发了一系列硬件电路开发板和仿真软件。比如Altera的quartus,Xinlinx的ise。

  • 在未拿到实际的开发板之前,没有时钟激励,没有实际的导线,我们如何将所设计的程序跑起来呢,modelsim为我们提供了一个良好的仿真平台。下面设计一些基于modelsim的实验。

实验一 2补码的溢出回绕特性##

  • 知识背景:
    在有符号数中,最小值-1=最大值,最大值-1=最小值。我们称之为回绕wrap around。
    为什么最小值-1=最大值?这要从计算机内部数字表示形式开始,都是采用补码表示。
    补码表示有一些好处:
    1、 统一了0([0]补=0000;).
    2、 把减法都可以转换为加法。
    3、 良好的溢出性质
    补码加法:
    [x]补+[y]补=[x+y]补
    例:x=+1011;y=-0101;求x+y;
    解:[x]补=01011;[y]补=11011;
    [x]补   01011
    [y]补   11011
    [x+y]补 (进位1丢掉)00110
    结果为x+y=+0110;
    补码加法的特点:1是符号位要作为数的一部分参与运算,而是要在模2(n+1)的意义下相加,即超过2(n+1)要丢掉。
    实验验证2补码的溢出回绕特性
    先令两个有符号四位二进制数相加溢出,再将结果减去一个有符号四位二进制数,的最终运算结果,观察验证结果是否正确。

  • quartus代码片:

module lab1(a,b,c,sum);
input  signed [4-1:0] a,b,c;
output signed [4-1:0] sum;
assign sum = a + b + c;
endmodule
  • modelsim代码片
`timescale 1 ps/ 1 ps
module lab1_vlg_tst();
reg eachvec;
reg [3:0] a;
reg [3:0] b;
reg [3:0] c;                                           
wire [3:0] sum;                      
lab1 i1 ( 
	.a(a),
	.b(b),
	.c(c),
	.sum(sum)
);
initial                                                
begin                                                  
a=1;
b=1;
c=1;                    
end                                                    
always                                                                
begin
#10 a=a+1;
b=b+2;
c=c+3;																										                                           
end                                                    
endmodule
  • Modelsim仿真图

[外链图片转存中…(img-E01NdAXC-1648537457582)]

  • 实验分析:

有符号四位的范围为-8~7;由modelsim仿真图可以看出,4+7=11(溢出),4+7-6=5,结果正确,由此有验证了2补码的溢出回绕特性。

  • 占用资源图

[外链图片转存中…(img-wwqbCjDn-1648537457583)]

实验二 不同长度的2补码数据运算##

  • 实验验证:
    先设计一个无符号的三位二进制数a和一个有符号的四位二进制数b,a补一位和b相加得sum1,a补两位,b补一位,两者此时数据对齐,相加得sum2,观察sum1和sum2是否和正确一致。

  • quartus代码片:

module lab_2(a,b,c,sum1,sum2);
input  		 	[2:0]a;
input  signed	[3:0]b;
output signed   [4:0]c;
output 		    [3:0]sum1;
output 		    [4:0]sum2;
reg				[4:0]c;
reg 		    [3:0]sum1;
reg 		    [4:0]sum2;

always@(a or b or c  )
begin
c={2'b0,a};
sum1={1'b0,a}+b;
if(b[3]==0)
sum2=c+{1'b0,b};
else
sum2=c+{1'b1,b};
end

endmodule


  • modelsim代码片:
module lab_2_vlg_tst();
reg eachvec;
reg       [2:0] a;
reg signed[3:0] b;                                            
wire [3:0] sum1;
wire [4:0] sum2;
wire [4:0] c;
                        
lab_2 i1 ( 
	.a(a),
	.b(b),
	.c(c),
	.sum1(sum1),
	.sum2(sum2)
);
initial                                                
begin                                                  
a=0;
b=4'b1001;                     
end                                                    
always                                                               
begin                                                  
#10
a=a+1;
if(b==4'b0111)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值