EDA电子技术实训报告.docx

上传人:b****3 文档编号:10176577 上传时间:2023-05-24 格式:DOCX 页数:28 大小:921.72KB
下载 相关 举报
EDA电子技术实训报告.docx_第1页
第1页 / 共28页
EDA电子技术实训报告.docx_第2页
第2页 / 共28页
EDA电子技术实训报告.docx_第3页
第3页 / 共28页
EDA电子技术实训报告.docx_第4页
第4页 / 共28页
EDA电子技术实训报告.docx_第5页
第5页 / 共28页
EDA电子技术实训报告.docx_第6页
第6页 / 共28页
EDA电子技术实训报告.docx_第7页
第7页 / 共28页
EDA电子技术实训报告.docx_第8页
第8页 / 共28页
EDA电子技术实训报告.docx_第9页
第9页 / 共28页
EDA电子技术实训报告.docx_第10页
第10页 / 共28页
EDA电子技术实训报告.docx_第11页
第11页 / 共28页
EDA电子技术实训报告.docx_第12页
第12页 / 共28页
EDA电子技术实训报告.docx_第13页
第13页 / 共28页
EDA电子技术实训报告.docx_第14页
第14页 / 共28页
EDA电子技术实训报告.docx_第15页
第15页 / 共28页
EDA电子技术实训报告.docx_第16页
第16页 / 共28页
EDA电子技术实训报告.docx_第17页
第17页 / 共28页
EDA电子技术实训报告.docx_第18页
第18页 / 共28页
EDA电子技术实训报告.docx_第19页
第19页 / 共28页
EDA电子技术实训报告.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

EDA电子技术实训报告.docx

《EDA电子技术实训报告.docx》由会员分享,可在线阅读,更多相关《EDA电子技术实训报告.docx(28页珍藏版)》请在冰点文库上搜索。

EDA电子技术实训报告.docx

EDA电子技术实训报告

一、课程设计的内容

1、学习EDA仿真技术,并使用Multisim仿真软件完成指定训练内容。

2、学习SOPC技术,并在FPGA上完成相关内容,掌握和理解SOPC的真正内涵。

3、通过学习了解Synopsys软件,掌握IC设计基础。

二、课程设计的要求与数据

1、严格按照分组情况进行实训;

2、完成指定的设计任务;

3、相关设计数据要填入指定表格;

4、课程设计的报告严格按照学校指定格式执行;

5、实训期间不得迟到早退,否则将严肃处理。

三、课程设计应完成的工作

1、学习Multisim仿真软件,并完成以下设计任务:

Lab1-9。

2、学习SOPC技术,并完成以下设计任务:

Task1-5。

3、学习IC设计技术基础,并完成以下设计任务:

SynopsysIC设计基础,主要学习linux基本操作,IC设计基本流程,概念,完成DesignCompiler综合工具实验。

四、应收集的资料及主要参考文献

1、谢云等,现代电子技术实践课程指导,机械工业出版社,北京,2006

2、张志刚,FPGA与SOPC设计教程—DE2实践,西安电子科技大学出版社,西安,2007

3、江国强,SOPC技术与应用,机械工业出版社,北京,2006

Multisim实验

实验一:

单机放大电路

一、实验目的

1、熟悉Multisim9软件的使用方法。

2、掌握放大器静态工作点的仿真方法及其对放大器性能的影响。

3、学习放大器静态工作点、电压放大倍数、输入电阻、输出电阻的仿真方法,了解共射极电路特性。

二、虚礼实验仪器及器材

双踪示波器信号发生器交流毫伏表数字万用表

三、实验原理图

四、实验内容

1、静态数据仿真:

仿真数据(对地数据)单位:

V

计算数据单位:

V

基极

集电极

发射极

Vbe

Vce

Rp

2.83387V

6.12673V

2.20436V

3.0045V

3.63606V

10KΩ

 

2、动态仿真一:

示波器显示输入输出波形:

输出波形与输入波形反相。

3、动态仿真二:

删除R6后示波器波形:

记录数据如下表:

仿真数据(注意填写单位)

V0有效值

Vi有效值

V0有效值

Av

-14.099mV

1.609V

114.928

加上5.1k欧和330欧的电阻记录数据如下表:

仿真数据(注意填写单位)

计算

RL

Vi

V0

Av

5.1KΩ

-14.128mv

272.531mv

19.290

330Ω

-14.103mv

34.365mv

2.437

其他不变,增大和减小滑动变阻器的值,观察V0的变化,并记录波形:

Vb

Vc

Ve

画出波形

Rp增大

减小

增大

减小

Vo幅度变小

Rp减小

增大

减小

增大

Vo幅度变大

四、动态仿真三:

1、测量输入电阻Ri

在输入端串联一个5.1k的电阻,如图所示,并且连接一个万用表,如图连接。

启动仿真,记录数据,并填表:

仿真数据(注意填写单位)

计算

信号发生器有效电压值

万用表的有效数据

Ri

10mv

6.84mv

11KΩ

2、测量输出电阻R0

仿真数据

计算

VL

V0

R0

102.572mV

199.583mV

4.461KΩ

五、思考题

1、画出如下电路:

2、如何把元件水平翻转和垂直翻转呢?

如图所示

答:

Q3变Q4按CTRL+R,Q3变Q5可按ALT+Y。

3、如何更改元件的数值呢?

答:

双击要修改的元件,在VALUE目录下的RESISTANCE栏修改元件数值。

4、如果去掉实验中的R7既是100欧电阻,输出波形有何变化?

5、元件库中有些元件后带有VIRTUAL,它表示什么意思?

答:

说明这些是虚拟元件,只有虚拟软件才能更改参数。

 

实验二射极跟随器

一、实验目的

1、熟悉Multisim9软件的使用方法。

2、掌握放大器静态工作点的仿真方法及其对放大器性能的影响。

3、学习放大器静态工作点、电压放大倍数、输入电阻、输出电阻的仿真方法,了解共射极电路特性。

4、学习Multisim9参数扫描方法

5、学会开关元件的使用

二、虚礼实验仪器及器材

双踪示波器信号发生器交流毫伏表数字万用表

 

三、实验原理图

四、实验内容(数据记录)

R1=150KΩ

Vb

Vc

Ve

Ie=Ve/Re

8.15063V

12V

7.48494V

4.1583mV

测量电压放大倍数

Vi(单位)

V0(单位)

AV=V0/VI

2.121V

2.095V

0.988

测量输入电阻

Vs(图中1端电压)

Vi(图中6端电压)

Ri=Vi*Rs/(Vs-Vi)

2.121V

1.974V

19.137kΩ

V0

vl

R0=(V0-VL)*RL/VL

2.108V

2.095V

910.118Ω

测量输出电阻

 

五、思考题

1、分析设计跟随器的性能和特点

答:

输入电阻大、输出电阻小、电压放大倍数接近1。

2、创建如图所示的整流电路,并进行仿真,观察输入和输出波形。

 

3、仿真计数器和数码管显示电路

4、运用MultiSIM的交互式仿真手段,模拟实际按键操作

二、实验环境

MultiSIMv9.0、Windows2000professional、PC机

三、原理图

四、实验内容

1、上电时的电容充电特性瞬态分析图形:

2、运行仿真,切换J2状态,观察数码管显示为0。

3、设计迟滞比较器电路,加正弦信号源(设置有效值为1.76V,电压偏移为2.5V,频率60Hz)到迟滞比较器输入端,运行仿真,用虚拟示波器观察迟滞比较器的输入输出特性。

VI:

2.489VVO:

1.2V

 

4、切换J1,数码管示数保持不变。

5、移去电容C2示波器显示结果(红色为输入电压,蓝色为输出电压):

6、J3每闭合一次,数码管的示数+1

7、接上电容C2示波器显示结果:

数码管示数没有变化。

 

(1)接通±12V电源,调节电位器,使输出波形从无到有,从正弦波失真到不失真。

描绘出输出端的波形,记下临界起振、正弦波输出及失真情况下的Rw值,分析负反馈强、弱对起振条件及输出波形的影响。

起震RW:

2.8KΩ

正弦波输出RW:

2.9KΩ

图中可以看出顶部开始失真,失真情况下的Rw值:

3.7KΩ。

(2)输出最大不失真情况下,用交流毫伏表测量输出电压,反馈电压,分析研究震荡的条件。

反馈电压:

5.107V

输出电压:

7.663V

(3)断开二极管D1、D2,重复以上实验,并比较分析有何不同。

正弦波、最大不失真RW:

2.8KΩ起震临界点RW:

2.7KΩ

失真RW:

2.9KΩ输出电压:

8.008V

反馈电压:

5.347V

 

2、方波发生器:

(1)描绘出示波器中方波和三角波

(2)改变Rw的位置,测出波形的输出频率范围

3.2894KHz——3.4128KHz

(3)如果把D1改为单向稳压管,输出波形的变化,并分析1N5758稳压管的作用

双向稳压管的作用是双向店亭钳位,使震荡输出的双向脉冲基本对称。

 

SOPC实验

实验二驱动1602液晶显示

任务要求:

1、弄清楚液晶1602驱动的原理,理解并写在实训报告中

2、在DE2板上的液晶上显示你的名字和学校的名字。

建议步骤:

1、建立所需其他辅助模块,包括分频等;

2、建立LCD控制模块(用纯硬件实现,也可以先实现NIOSII,再用C实现);

驱动显示原理:

用LCD显示一个字符时,因为一个字符由6X8或者8X8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的八个字节,还要使每个字节的不同位为“1”,其他的为“0”,为“1”的点亮,为“0”的不亮,这样一来就组成了某个字符。

但是由于内带字符发生的控制器来说,可以让控制器工作在文本方式上,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标。

1602液晶模块内部的字符发生储存器已经存储了160个不同的点阵字符图形,这些字符有:

阿拉伯数字、英文字母的大小写等等,比如大写字母“A”的代码是01000001B(41H),显示模块把地址41H中的点阵字符图形显示出来就可以了。

CGROM和CGRAM中字符代码和字符图形的对应关系如下图:

程序代码如下:

modulelcd1602(clk,rst,lcd_e,lcd_rw,lcd_rs,data,lcd_on,lcd_blon);

inputclk,rst;

outputlcd_e,lcd_rw,lcd_rs,lcd_blon,lcd_on;

output[7:

0]data;

reglcd_rw,lcd_rs;

reg[7:

0]data;

reg[9:

0]state;

reg[5:

0]address;

reg[22:

0]cnt;

regclk500hz;

parameterIDLE=10'b0000000000;

parameterCLEAR=10'b0000000001;//清屏

parameterRETURNCURSOR=10'b0000000010;//归home位

parameterSETMODE=10'b0000000111;//输入方式设置,读写数据后ram地址增/减1;画面动/不动

parameterSWITCHMODE=10'b0000001111;

//显示状态设置,显示开/关;光标开/关;闪烁开/关

parameterSHIFT=10'b0000011100;//光标画面滚动画面/光标平移一位;左/右平移一位

parameterSETFUNCTION=10'b0000111100;//工作方式设置1:

8/1:

4位数据接口;两行/一行显示;5x10/5x7点阵

parameterSETCGRAM=10'b0001000000;//设置CGRAM

parameterSETDDRAM1=10'b0010000001;//设置DDRAM

parameterSETDDRAM2=10'b0010000010;//设置DDRAM

parameterREADFLAG=10'b0100000000;//读状态

parameterWRITERAM1=10'b1000000001;//写RAM

parameterWRITERAM2=10'b1000000010;//写RAM

parameterREADRAM=10'b1100000000;//读RAM

assignlcd_on=1'b1;

assignlcd_blon=1'b1;

always@(posedgeclk)//由50MHZ时钟分频得到4HZ时钟

beginif(cnt==19'h7a120)//19'h7a120=19'd500000

begincnt<=0;clk500hz<=~clk500hz;//500000*20ns=1000000us取反即为2ms=1/500s

end

elsecnt<=cnt+1;

end

assignlcd_e=clk500hz;

function[7:

0]ddram;//

input[5:

0]n;

begin

case(n)

//下面修改成你所需内容

6'b000_000:

ddram=8'b0101_0011;//S

6'b000_001:

ddram=8'b0101_0101;//U

6'b000_010:

ddram=8'b0010_0000;//

6'b000_011:

ddram=8'b0010_0000;//

6'b000_100:

ddram=8'b0100_1010;//J

6'b000_101:

ddram=8'b0100_1001;//I

6'b000_110:

ddram=8'b0100_0001;//A

6'b000_111:

ddram=8'b0100_1110;//N

6'b001_000:

ddram=8'b0100_0111;//G

6'b001_001:

ddram=8'b0100_0100;//D

6'b001_010:

ddram=8'b0101_0101;//U

6'b001_011:

ddram=8'b0101_0100;//T

endcase

endendfunction

always@(posedgeclk500hzornegedgerst)

if(!

rst)

begin

state<=IDLE;

address<=6'b000000;

data<=8'b00000000;

lcd_rs<=0;

lcd_rw<=0;

end

elsebegin

case(state)

IDLE:

beginstate<=CLEAR;

data<=8'bzzzz_zzzz;

end

 

CLEAR:

beginlcd_rs<=0;lcd_rw<=0;

data<=8'h01;

state<=SETFUNCTION;//清屏

end

SETFUNCTION:

beginlcd_rs<=0;lcd_rw<=0;

data<=8'h3c;

state<=SWITCHMODE;

end

SWITCHMODE:

beginlcd_rs<=0;lcd_rw<=0;//显示状态开关设置0C

data<=8'h0c;//开光标、开闪烁

state<=SETMODE;

end

SETMODE:

beginlcd_rs<=0;lcd_rw<=0;

data<=8'h06;//采取增量方式,光标不移动

state<=SHIFT;

end

SHIFT:

beginlcd_rs<=0;lcd_rw<=0;

data<=8'h18;

state<=SETDDRAM1;

end

SETDDRAM1:

beginlcd_rs<=0;lcd_rw<=0;data<=8'b10000100;//显示数据存储器地址804

state<=WRITERAM1;end

SETDDRAM2:

beginlcd_rs<=0;lcd_rw<=0;data<=8'b11000010;//显示数据存储器地址80402

state<=WRITERAM2;end

WRITERAM1:

begin

if(address<=6'b000_111)

begin

lcd_rs<=1;

lcd_rw<=0;

data<=ddram(address);

address<=address+1;

state<=WRITERAM1;

end

else

begin

lcd_rs<=0;

lcd_rw<=0;

state<=SETDDRAM2;

end

end

WRITERAM2:

begin

if(address<=6'b010_100)begin

lcd_rs<=1;

lcd_rw<=0;

data<=ddram(address);

address<=address+1;

state<=WRITERAM2;

end

else

begin

lcd_rs<=0;

lcd_rw<=0;

state<=SHIFT;

address<=6'b000000;

end

end

endcase

end

endmodule

 

实验结果截图:

 

实验三VGA显示矩形框

任务:

1、弄清楚VGA显示的原理,理解并写在实训报告中

2、在VGA显示器上显示一个矩形框。

建议步骤:

1、建立VGA显示所需其他辅助模块,包括分频等;

2、建立VGA控制模块(用纯硬件实现,也可以先实现NIOSII,再用C实现);

VGA显示原理:

FPGA对系统进行编程可输出红、绿、蓝三基色信号和HS、VS行场扫描同步信号。

当FPGA接受输出的控制信号后,内部的数据选择器模块根据控制信号选择相应的图像生成模块,输出图像信号,与行场扫描时序信号一起通过VGA接口电路送入显示器,VGA显示器上便可看到对应在的彩色图像。

主芯片时钟由外部提供,由一片晶振提供50MHz频率的时钟源,接入芯片全局时钟引脚CLK。

控制中,只需要考虑行同步信号(Hs)、场同步信号(Vs)以及红绿蓝(RGB)这5个信号。

如果能从FPGA发出这5个信号到VGA接口,就可以实现对VGA的控制。

系统模块图如下:

程序源代码:

module vga_controller(iclk,irst_n,

ovga_r,ovga_g,

ovga_b,

ovga_sync,

ovga_blank,

ovga_clock,

ovga_h_sync,

ovga_v_sync

);

input iclk,irst_n; //iclk应为25.175MHZ

output[9:

0] ovga_r;

output[9:

0] ovga_g;

output[9:

0] ovga_b;

output ovga_sync; //同步信号输出

output ovga_blank; //消隐信号输出

output ovga_clock; //时钟输出

output reg ovga_h_sync; //水平同步信号输出

output reg ovga_v_sync; //垂直同步信号输出

reg [9:

0]h_cnt; //行扫描计数器

reg [9:

0]v_cnt; //列扫描计数器//水平参数(单位:

像素)

parameter h_sync_cyc=96,

h_sync_back=45+3,

h_sync_act=640,

h_sync_front=13+3,

h_sync_total=800;

//垂直参数(单位:

线)

parameter v_sync_cyc=2,

v_sync_back=30+2,

v_sync_act=480,v_sync_front=9+2,

v_sync_total=525;

//起始偏移

parameter x_start=h_sync_cyc+h_sync_back,

y_start=v_sync_cyc+v_sync_back;

assign ovga_blank=ovga_h_sync & ovga_v_sync;

assign ovga_sync=1'b0;

assign ovga_clock=iclk;

assign valid = (h_cnt > x_start) && (h_cnt < x_start+h_sync_act)

&& (v_cnt > y_start) && (v_cnt < y_start+v_sync_act);

wire[9:

0] xpos,ypos; //有效显示区坐标

assign xpos = h_cnt-10'd144;

assign ypos = v_cnt-10'd34;

//--------------------------------------------------

//显示一个矩形框

wire a_dis,b_dis,c_dis,d_dis; //矩形框显示区域定位

reg[9:

0] aa_dis;

reg[9:

0] bb_dis;

reg[9:

0] cc_dis;

reg[9:

0] dd_dis;

reg[9:

0] ee_rdy;

always @(posedge iclk or negedge irst_n)

begin

if(!

irst_n)

begin

aa_dis<=10'd0;

bb_dis<=10'd0;

cc_dis<=10'd0;

dd_dis<=10'd0;

end

else

begin

if(a_dis)

aa_dis<=10'h3ff;

else

aa_dis<=0;

if(b_dis)

bb_dis<=10'h3ff;

else

bb_dis<=0;if(c_dis)

cc_dis<=10'h3ff;

else

cc_dis<=0;

if(d_dis)

dd_dis<=10'h3ff;

else

dd_dis<=0;

if(e_rdy)

ee_rdy<=10'h3ff;

else

ee_rdy<=0;

end

end

assign a_dis = ( (xpos>=200) && (xpos<=220) )

&& ( (ypos>=100) && (ypos<=380) );

assign b_dis = ( (xpos>=440) && (xpos<=460) )

&& ( (ypos>=100) && (ypos<=380) );

assign c_dis = ( (xpos>=220) && (xpos<=440) )

&& ( (ypos>100) && (ypos<=120) );

assign d_dis = ( (xpos>=220) && (xpos<=440) )

&& ( (ypos>=360) && (ypos<=380) );

//显示一个小矩形

wire e_rdy; //矩形的显示有效矩形区域

assign e_rdy = ( (xpos>=310) && (xpos<=330) )

&& ( (ypos>=230) && (ypos<=250) );

//--------------------------------------------------

//r,g,b控制液晶屏颜色显示,背景显示蓝色,矩形框显示红蓝色

assign ovga_r = valid && e_rdy ?

 ee_rdy :

 1'b0;

assign ovga_g = valid && (a_dis | b_dis | c_dis | d_dis) ?

 10'h3ff:

1'b0;

assign ovga_b = valid &&(a_dis | b_dis | c_dis | d_dis) ?

 10'h3ff :

1'b0;if(!

irst_n)

begin

h_cnt<=0;

ovga_h_sync<=0;

end

else

begin

if(h_cnt计数器计数

h_cnt<=h_cnt+1;

else

h_cnt<=0;

if(h_cnt生成h_sync

ovga_h_sync<=0;

else

ovga_h_sync<=1;

e

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2