EDA实验实验报告2Word文件下载.docx
- 文档编号:17738012
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:22
- 大小:188.89KB
EDA实验实验报告2Word文件下载.docx
《EDA实验实验报告2Word文件下载.docx》由会员分享,可在线阅读,更多相关《EDA实验实验报告2Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
主程序:
modulefull_add(a,b,cin,sum,cout);
inputa,b,cin;
outputsum,cout;
assign{cout,sum}=a+b+cin;
endmodule
五、波形仿真截图
实验二花样流水灯
实验时间:
2010、10实验地点:
二实验楼405
孙滕坤
通过实验让学生进一步了解,熟悉和掌握CPLD/FPGA开发软件的使用方法及VerilogHDLde编程方法;
学习简单时序电路的设计和硬件测试。
建立可用于控制LED流水灯的简单硬件电路,要求在SmartSOPC实验箱上实现LED1-LED8发光二极管流水灯显示。
(1)在LED1-LED8引脚上周期性地输出流水数据
(2)int_div分频模块说明:
int_div模块是一个占空比为50%的任意整数分频器。
1、启动QuartusⅡ建立一个空白工程并命名led_water.qpf。
2、新建VerilogHDL原程序文件ledwater.v,输入程序代码并保存,然后进行综合编译直至成功。
3、从设计文件创建模块,有ledwater.v成成名为ledwater.bsf的模块符号文件。
4、新建图形设计文件命名为led_water.bdf并保存。
选择目标器件并对相应的引脚进行锁定
5、将led_water.bdf设置为顶层实体。
对该工程进行全程编译处理直到成功。
连接跳线短接帽跳接到SmartSOPC实验箱上JP6的LED0-LED7,连接核心板上的JTAG下载口,开电源,执行下载命令,观察结果。
更改分频模块的分频系数,并重新编译观察变化。
moduleled_water(led,clk);
output[7:
0]led;
inputclk;
reg[8:
0]led_r;
assignled=led_r[7:
0];
always@(posedgeclk)
begin
led_r[7:
4]<
=led_r[7:
4]>
>
1;
led_r[3:
0]<
=led_r[3:
<
if(led_r==8'
d0)
led_r<
=8'
b;
end
endmodule
五、实验总结
学会了简单时序电路的设计和硬件测试以及流水灯的简单程序,但对于花样流水灯的程序设计没有成功,个人知识有待提升。
实验三计数分频器的设计(偶数)
2010、11实验地点:
学习数控分频器的设计,分析和测试方法。
原理:
数控分频器的功能就是当输入端输入不同的数据时,产生不同的分频比,从而产生不同的频率值。
内容:
在SmartSOPC实验箱上实现数控分频器的设计。
在clk输入频率信号(有int_div模块分频得到);
输出FOUT接蜂鸣器BUZZ_ER,由KEY1/KEY2控制输入8位预置数,并在数码管1-2上显示。
1、启动QuartusⅡ建立一个空白工程,然后命名为dvf.qpf。
新建VerilogHDL源程序文件fenpin,输入程序代码并保存,进行综合编译知道成功为止。
2、建立波形仿真文件(dvf.vwf)并进行功能仿真验证。
3、新建图形设计文件(顶层模块)命名为dvf.bdf并保存。
选择目标器件并对相应的引脚进行锁定。
4、将dvf.bdf设置为顶层实体。
对该工程文件进行全程编译处理,直到编译成功为止。
5、连接硬件,下载程序。
modulefenpin(clk,clkout);
outputclkout;
regq1,q2,d,clkout;
always@(posedgeclk)
if(!
d)
q1=1'
b1;
else
q1=~q1;
q2=1'
else
q2=~q2;
always@(posedged)
clkout=~clkout;
通过技术分频器的设计,更加深刻的了解了VerilogHDL的使用方法,学会了数控分频的原理及简单的数控分频程序的编译。
实验四按键控制数码管显示
孙腾坤
通过实验进一步掌握CPLD/FPGA开发软件的使用方法及VerilogHDL的编程方法,并熟悉以VerilogHDL文件为顶层模块的设计。
1、在SmartSOPC实验箱上完成对八个键盘KEY1-KEY8进行监控,一有输入信号就点亮相应的发光二极管。
2、原理:
FPGA的所有I/O控制块允许每个I/O引脚单独配置为输入口。
I/O口被设置为输入口使用时,使得I/O控制模块将直接是三态缓冲区的控制端接地,该I/O口对外呈高阻态,这样该I/O引脚既可用作专用输入引脚。
1、启动QuartusⅡ建立一个空白工程。
2、新建VerilogHDL源程序文件keyled.v,输入程序代码并保存,进行综合编译直到成功为止。
3、选择目标器件并对相应的引脚进行锁定。
4、对该工程文件进行全程编译处理,直到成功为止。
5、最后将跳线短接帽跳接到JP6的LED0-LED7、KEY1-KEY8之间,使LED1-LED8和KEY1-KEY8和芯片对应的引脚相连。
modulekeyled(key,led);
input[7:
0]key;
output[7:
reg[7:
0]buffer_r;
assignled=led_r;
always@(key)
begin
buffer_r=key;
case(buffer_r)
8'
b:
led_r=8'
default:
led_r=8'
endcase
end
endmodule
六、实验总结
通过实验,成功的用按键控制了数码管的显示。
并更加熟悉了VerilogHDL文件的编程以及FPGAI/O口的输出控制。
实验五学号的显示
(1)熟悉软件使用,了解FPGA设计的过程;
(2)用画电路图的方法进行逻辑设计;
采用原理图的设计一位加法器,采用原理图的层次化设计,先设计一个半加器,再用设计好的半加器构成一个全加器;
(1)用画电路图的方法进行逻辑设计并编辑VHDl程序。
(2)编译。
(3)建立图形文件。
(4)建立波形文件。
(5)编辑管脚。
(6)编译。
(7)器件下载。
显示主程序:
moduledisplay(clk,seg,dig);
0]dig;
0]seg;
reg[7:
0]seg_r;
0]dig_r;
reg[3:
0]disp_dat;
reg[2:
0]count;
assigndig=dig_r;
assignseg=seg_r;
begin
count<
=count+1'
case(count)
3'
d0:
disp_dat=4'
b0100;
d1:
b0000;
d2:
b0111;
d3:
b0001;
d4:
d5:
b1000;
d6:
d7:
b0101;
dig_r=8'
always@(disp_dat)
case(disp_dat)
4'
h0:
seg_r=8'
hc0;
h1:
hf9;
h2:
ha4;
h3:
hb0;
h4:
h99;
h5:
h92;
h6:
h82;
h7:
hf8;
h8:
h80;
h9:
h90;
ha:
h88;
hb:
h83;
hc:
hc6;
hd:
ha1;
he:
h86;
hf:
h8e;
endcase
分频程序:
//*******************************************************//
//任意整数分频模块//
//功能:
对输入时钟clock进行F_DIV倍分频后输出clk_out。
//其中F_DIV为分频系数,分频系数范围为1~2^n(n=F_DIV_WIDTH)
//若要改变分频系数,改变参数F_DIV或F_DIV_WIDTH到相应范围即可。
//若分频系数为偶数,则输出时钟占空比为50%;
//若分频系数为奇数,则输出时钟占空比取决于输入时钟占空比和分
//频系数(当输入为50%时,输出也是50%)。
//--------------------------------------------------------
//奇数倍分频:
三倍分频的时序图如下所示。
//123456
//clock|--|__|--|__|--|__|--|__|--|__|--|__|
//clk_p_r|_____|-----------|_____|-----------|
//clk_n_r---|_____|-----------|_____|---------
//clk_out|________|--------|________|--------|
moduleint_div(clock,clk_out);
//I/O口声明
inputclock;
//输入时钟
outputclk_out;
//输出时钟
//内部寄存器
regclk_p_r;
//上升沿输出时钟
regclk_n_r;
//下降沿输出时钟
reg[F_DIV_WIDTH-1:
0]count_p;
//上升沿脉冲计数器
0]count_n;
//下降沿脉冲计数器
//参数--分频系数
parameterF_DIV=;
//分频系数<
-----修改这里
parameterF_DIV_WIDTH=32;
//分频计数器宽度
wirefull_div_p;
//上升沿计数满标志
wirehalf_div_p;
//上升沿计数半满标志
wirefull_div_n;
//下降沿计数满标志
wirehalf_div_n;
//下降沿计数半满标志
//判断计数标志位置位与否
assignfull_div_p=(count_p<
F_DIV-1);
assignhalf_div_p=(count_p<
(F_DIV>
1)-1);
assignfull_div_n=(count_n<
assignhalf_div_n=(count_n<
//时钟输出
assignclk_out=(F_DIV==1)?
clock:
(F_DIV[0]?
(clk_p_r&
clk_n_r):
clk_p_r);
//上升沿脉冲计数
always@(posedgeclock)
if(full_div_p)
count_p<
=count_p+1'
if(half_div_p)
clk_p_r<
=1'
b0;
else
=0;
//下降沿脉冲计数
always@(negedgeclock)
if(full_div_n)
count_n<
=count_n+1'
if(half_div_n)
clk_n_r<
将分频程序生成模块和显示程序生成模块按下图方式连接:
添加int_div.v模块、创建符号文件、设置顶层文件时要注意操作顺序。
实验六数控计数器(从0显示到学号后3位)
同组人员:
熟悉软件使用,了解FPGA设计的过程,学习自加器的电路、程序设计;
用画电路图的方法进行逻辑设计。
数控计数器的功能就是在有限时间的时钟触发条件下,计数器加一(同时在数码管显示)。
当个位加到“9”时,向十位进“1”,同时个位清“0”。
当十位为设计需要的个位时,个位十位都清“0”。
并重新开始计数。
modulemy_number(clk,dig,seg,reset);
inputclk,reset;
0]dig,seg;
reg[24:
reg[23:
0]hour;
regsec;
count=count+1'
if(count==25'
count=25'
d0;
sec=~sec;
case(count[17:
15])
disp_dat=hour[3:
disp_dat=hour[7:
4];
disp_dat=hour[11:
8];
case(disp_dat)
4'
hbf;
hff;
if((count[17:
15]==3'
d2)&
sec)
seg_r=8'
always@(negedgesecornegedgereset)
if(!
reset)
begin
hour=24'
h0;
end
elseif(reset)
hour[3:
0]=hour[3:
0]+1'
if(hour[3:
0]==4'
ha)
begin
hour[3:
0]=4'
hour[7:
4]=hour[7:
4]+1'
end
if(hour[7:
4]==4'
begin
hour[7:
4]=4'
hour[11:
8]=hour[11:
8]+1'
end
if(hour[11:
8]==4'
8]=4'
h8;
hour[3:
h5;
进位,清零的判断方法需要根据实验时自己的学号后3位改进。
实验七序列检测器(10101)
1.掌握如何画状态图;
2.掌握有限状态机程序的编写;
3.掌握状态机现态、次态的时序分析、输出组合逻辑的分析;
4.掌握三段式、二段式有限状态机verilog程序的编写。
序列检测器可以用于检测二进制码组成的脉冲序列信号。
当序列检测器连续收到一串二进制码后,如果这组序列与检测器中预先组成设置的序列码相同,则输出1,否则为0。
这种检测的关键是必须收到连续的正确码,所以要求检测器必须对前一次接收到的序列码做记忆分析,直到在连续检测中所收到的每一位二进制都与预制序列码对应相同。
三、实验数据与结果
modulemystate(x,rest,z,clk,state);
inputx,clk,rest;
outputz;
output[2:
0]state;
wirez;
parameterIDLE='
d0,A='
d1,B='
d2,
C='
d3,D='
d4,
E='
d5,F='
d6,
G='
d7;
assignz=(state==E&
&
x==0)?
1:
0;
rest)
state<
=IDLE;
case(state)
IDLE:
if(x==1)
begin
state<
=A;
end
A:
if(x==0)
=B;
B:
=C;
else
=F;
C:
=D;
=G;
D:
=E;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)