数字系统设计与VHDL实验授课计划11级本科.docx
- 文档编号:7829130
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:18
- 大小:224.91KB
数字系统设计与VHDL实验授课计划11级本科.docx
《数字系统设计与VHDL实验授课计划11级本科.docx》由会员分享,可在线阅读,更多相关《数字系统设计与VHDL实验授课计划11级本科.docx(18页珍藏版)》请在冰豆网上搜索。
数字系统设计与VHDL实验授课计划11级本科
河南工程学院
实验授课计划表
2013-2014学年度第2学期
课程名称数字系统设计与VHDL
授课班级电子科学与技术1141,1142
电气工程及其自动化1141,1142
任课教师瓮嘉民
开课单位电气信息工程学院
填表日期:
2014年2月15日
数字系统设计与VHDL实验授课进度安排
周次
月
日
教学进度
课时
教学目的、要求
教学
方式
3
实验一
2
QuartusⅡ6.0/9.0快速入门
上机
7
实验二
2
含异步清0和同步时钟使能的4位加法计数器
上机
8/11
实验三
2
LPM的使用方法
上机
11/15
实验四
2
用状态机实现对ADC的采样控制电路设计
上机
注:
电科1141/1142第3、7、11周四1、2节进行,第8周四中午进行;
电气工程1141/1142第3、7、11、15周四3、4节进行
实验一QuartusⅡ6.0/9.0快速入门
1.实验目的
通过此实验让学生逐步了解、熟悉和掌握FPGA开发软件QuartusII的使用方法及VerliogHDL的编程方法。
本实验力求以详细的步骤和讲解让读者以最快的方式了解EDA技术开发以及软件的使用,从而快速入门并激起读者对EDA技术的兴趣。
2.实验内容
MagicSOPC实验箱上有8个发光二级管LED1-LED8,其硬件原理如图1.25所示。
PowerSOPC-2C35核心板上的LED1-LED8与主板上的LED1-LED8是共用FPGA管脚的,分别与FPGA(EP2C35F672C8)的R5、P9、P7、P6、P3、P8、R6和T3的管脚相连。
本实验的内容是建立可用于控制LED亮/灭的简单硬件电路,要求点亮MagicSOPC实验箱上的4个发光二极管(LED1、LED3、LED5和LED7)。
具体包括:
1)使用QuartusII建立工程;
2)QuartusII工程设计;
3)设置编译选项并编译硬件系统;
4)下载硬件设计到目标FPGA;
5)观察LED的状态;
3.实验原理
FPGA器件同单片机一样,为用户提供了许多灵活独立的输入/输出I/O口(单元)。
FPGA
每个I/O口可以配置为输入、输出、双向I/O口、集电极开路和三态门等各种组态。
作为输出口时,FPGA哦I/O口可以吸收最大为24mA的电流,可以直接驱动发光二级管LED等器件。
所以只要正确分配并锁定引脚后,在相应的引脚上输出低电平“0”,就可以实现点亮该发光二级管的功能。
4.实验步骤
1)使用QuartusII建立工程
每个开发过程开始时都应建立一个QuartusII工程,QuartusII是以工程的方式对设计过程进行管理,QuartusII工程中存放创造FPGA配置文件需要的所有设置和设计文件。
(1)打开QuartusII软件并建立工程
选择开始>>程序>>Altera>>QuartusII7.0>>QuartusII7.0(32-Bit)打开QuartusII9.0软件
选择FILE>>NewProjectWizard来新建一项工程,注意不要把New误认为NewProjectWizard...。
单击Next进入新建工程路径、名称、顶层实体指定对话框。
工程名与顶层实体名同名为led_test。
接着单击Next进入添加文件对话框。
单击Finish,完成新建工程的建立。
(2)建立文本编辑文件
在创建一个设计工程以后,选择File>>New打开新建文件对话框,在新建文件对话框中选择VerilogHDLFile,按OK建立一个空的VerilogHDL文件,缺省名为Verilog1.v,最后选择File>>SaveAs改名为led.v或led1.v并保存。
2)QuartusII工程设计
在第一步中已经建立好了QuartueII工程文件,现在要对QuartueII工程进行编程设计。
(1)在VerilogHDL文件中编写源程序
在新建在VerilogHDL源程序文件输入程序代码并保存。
完整的VerilogHDL编程参考程序清单3.1。
(注意:
程序的模块名应与文件名一致)。
(2)分配FPGA引脚
本实验中各引脚的命名以及与目标FPGA器件引脚号的关系如表3.1所列。
表3.1引脚锁定方法
信号
引脚
信号
引脚
信号
引脚
信号
引脚
led[0]
R5
led[2]
P7
led[4]
P3
led[6]
R6
led[1]
P9
led[3]
P6
led[5]
R8
led[7]
T3
3)设置编译选项并编译硬件系统;
4)下载硬件设计到目标FPGA
成功编译硬件系统后,将产生led-test,sof的FPGA配置文件输出。
5)观察LED的状态
观察MagicSOPC试验箱上的发光二级管LED1~LED8,看是否与设计相符。
5.实验参考程序
文件名led1.v
moduleled1(led);//模块名led1
output[7:
0]led;//定义输出端口
reg[7:
0]led;//定义寄存器
always//过程1
begin
led=8'b10101010;//输出
end
endmodule
实验二含异步清零和同步时钟使能的4位加法计数器
1.实验目的
学习计数器的设计、仿真和硬件测试,进一步熟悉VerilogHDL的编程方法。
2.实验内容
本实验的内容是QuartusII建立一个含计数使能、异步复位的4位加法计数器,
并进行仿真测试。
最好在MagicSOPC实验箱上进行硬件测试,有由SW1控制计数使能端ena并由LED1指示,SYS-RST按键复位端rst并由LED2指示。
进位输出由LED8指示,计数值由数码管指示。
时钟clk输入为4HZ的信号,有数字信号源的Clock0提供。
3.实验原理
图1是一个含一个计数使能、异步复位的4位加法计数器,图中间是4位锁
存器;rst是异步清零信号,低电平有效;clk是锁存信号;当ena为‘1’时使能锁存器。
图1含计数使能、异步复位的4位加法计数器
4.实验步骤
1)启动QuartusII建立一个空白工程,然后命名为cnt-4b.qpf 。
2)新建VerilogHDL源程序文件cnt4b.v和gray-to-bin.v,输入程序代码并保存(完整的VerilogHDL程序参考程序清单3.10),进行综合编译,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
3)建立波形仿真文件并进行仿真验证。
4)将3.5节实验中的dec17s.bsf、dec17s.v(程序清单3.5)拷贝到工程目录。
5)新建图形设计文件(顶层模块)命名为cnt-4b.bdf并保存。
其模块原理图如图2所示。
图24位加法计数器顶层模块
6)选择目标器件并对对应的引脚进行锁定,在这里所选择的器件为Atera公司Cyclonell系列的EP2C35F672C8芯片,引脚锁定方法如表1所列。
注意ena信号是拨档开关的输入,I/OBank工作电压是2.5v,所在I/O电平要设置为2.5v。
将未使用的引脚设置为三态输入。
表1引脚锁定方法
信号
引脚
信号
引脚
信号
引脚
信号
引脚
seg[0]
J8
seg[6]
L10
dig[4]
J3
ena
L25
seg[1]
M3
seg[7]
L9
dig[5]
K4
Led1
R5
seg[2]
K6
dig[0]
L6
dig[6]
L3
Led2
P9
seg[3]
J6
dig[1]
K5
dig[7]
M4
Led8
T7
seg[4]
U10
dig[2]
G3
clock0
N2
seg[5]
N9
dig[3]
G4
sys_rst
AC13
注:
ena信号引脚输入应设为2.5v电平标准。
7)将cnt_4b.bdf设置为顶层实体。
对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,知道编译成功为止。
8)确保数字信号源(B4区域)的JP11的短路帽是处于ON位置,JP7中CLOCK0的短路帽处于4Hz位置;最后把程序下载到FPGA器件中。
拨动拨动开关SW1,按SYS_RST按键,观察数码管和发光二极管的状态,是否与设计想符合。
5.实验参考程序
程序清单cnt4b.v
modulecnt4b(clk,rst,ena,dout,cout);//模块名cnt4b
inputclk,rst,ena;//输入信号
output[3:
0]dout;//计数输出
outputcout;//进位输出
reg[3:
0]cnt;//计数器
assigncout=&cnt;//进位输出
assigndout=cnt;//计数器输出
always@(posedgeclkornegedgerst)
begin
if(rst==1'b0)//异步清零,低电平有效
cnt<=4'h0;
elseif(ena==1'b1)//同步使能计数,高电平有效
cnt<=cnt+1'b1;
end
endmodule
实验三LPM的使用方法
1.实验目的
利用LPM,学习8位硬件加法器的设计,进一步学习电路的仿真验证和硬件测试。
2.实验内容
本实验的内容是建立一个8位硬件加法器,并在MagicSOPC试验箱上进行测试,由KEY1~KEY4输入被加数和加数,并在数码管1~4上显示,KEY5输入进位位,并由LED1指示。
计算结果在数码管6~8上显示出来。
3.实验原理
1)在数字信号处理的快速运算电路中常常用到多位数字量的加法运算,这时需要用到并行加法器。
并行加法器比串行加法器快的多,电路结构也不太复杂。
它的原理很容易理解。
现在普遍采用的是carry-look-ahead-adder加法电路(也称超前进位加法器),只是在几个全加器的基础上增加了一个超前进位形成逻辑,以减少由于逐位进位信号的传递所造成的延迟。
用verilogHDL来描述加法器是比较容易的,只需要把运算表达式写出来就可以了。
2)key_led模块说明,模块如图1的key_led所示。
(1)模块的各端口说明如下:
·clock:
系统时钟输入(50MHz);
·key[7…0]:
按键输入(KEY1~KEY8);
·ledin[3…0]:
LED指示输入端(分别接LED8~LED5,高电平“1”LED亮);
·data[15:
0]:
数码管显示输入端(经七段译码后送数码管5~8显示data[15:
12]:
数码管5、data[11:
8]:
数码管6、data[7:
4]:
数码管7、data[3:
0]:
数码管8、);
·bin[3…0]:
输出四位二进制码,其值由LED4~LED1对应指示(高电平“1”LED亮);
·hex[15:
0]:
输出四组四位二进制码,其值经七段译码后送数码管1~4显示
(hex[15:
12]:
数码管1、hex[11:
8]:
数码管2、hex[7:
4]:
数码管3、hex[3:
0]:
数码管4);
·led[7…0]:
LED输出(低电平“0”LED亮);
·seg[7…0]:
数码管段输出;
·dig[7…0]:
数码管位输出;
(2)模块的功能说明如下:
按KEY1~KEY4,对应的数码管1~4的数加1,并由hex[15:
0]输出。
按KEY5~KEY8,对应的发光二极管LED1~LED4的状态改变一次,并由bin[3…0]输出。
LED5~LED8的状态由ledin[3…0]决定,数码管5~8的显示数由data[15:
0]决定。
4.实验步骤
1)启动QuartusII建立一个空白工程,然后命名为adder8.qpf.
2)新建verilogHDL源程序文件adder.v,输入程序代码并保存,进行综合编译,若在编译过程中发现错误,则找出并更改错误,直至编译成功为止。
3)建立波形仿真文件(adder8.vef)并进行功能仿真验证。
如图2所示。
图28位全加器仿真波形图
4)将光盘中的EDA_Component目录下的key_led.v拷贝到工程目录。
5)新建图形设计文件(顶层模块)命名为adder8.bdf并保存。
其模块原理图如图3所示。
图38位全加器顶层模块
6)选择目标器件并对相应的引脚锁定,在这里所选择的器件为Altera公司cycloneII系列的EP2C35F672C8芯片,引脚锁定方法如表1所列。
将未使用的引脚设置为三态输入(一定要设置,否则可能会损坏芯片)。
表1引脚锁定方法
信号
引脚
信号
引脚
信号
引脚
信号
引脚
seg[0]
J8
dig[1]
K5
Led[2]
P7
key[3]
P1
seg[1]
M3
dig[2]
G3
Led[3]
P6
key[4]
AD13
seg[2]
K6
dig[3]
G4
Led[4]
P3
key[5]
AF14
seg[3]
J6
dig[4]
J3
Led[5]
R8
key[6]
P25
seg[4]
U10
dig[5]
K4
Led[6]
R6
key[7]
P26
seg[5]
N9
dig[6]
L3
Led[7]
T7
clock/clk
B13
seg[6]
L10
dig[7]
M4
key[0]
C13
clock0
N2
seg[7]
L9
Led[0]
R5
key[1]
D13
fout
F18
dig[0]
L6
Led[1]
P9
key[2]
N1
注:
表中clock/clk信号在使用时需根据设计工程选择。
在本实验中为clock。
7)将adder8.bdf设置为顶层实体,对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更改错误,直至编译成功为止。
8)将程序下载到FPGA器件中。
按KEY1~KEY5观察数码管的状态,是否与设计想符合。
5.实验参考程序
程序清单adder.v
moduleadder(cout,sum,a,b,cin);//8位全加器
output[7:
0]sum;
outputcout;
input[7:
0]a,b;
inputcin;
assign{cout,sum}=a+b+cin;
endmodule
实验四用状态机实现对ADC的采样控制电路设计
1.实验目的
熟悉串行模数转换芯片TCL549的使用方法,掌握利用有限状态机实现一般时序逻辑分析的方法,了解一般状态机的设计与应用。
2.实验内容
本实验的内容是使用状态机实现对TLC549的采样控制,实现一个简易的电压表。
模数转换电路原理图如图1.48所示。
利用QuartusⅡ完成设计方针等工作,最后在MagicSOPC试验箱上进行硬件测试。
实验时通过调节电位器W1改变ADC的模拟输入值,数据采样读取后由数码管1/2显示。
最后用万用表测量输入电压,并与读取到的数据(经换算后的数据)做比较。
3.实验原理
TLC549是一个八位的串行模数转换器,AD转换时间最大17微秒,I/O时钟可达1.1MHZ。
如图1所示为TLC549的访问时序,从图中可以看由当CS/拉低时,ADC前一次的转换数据(A)的最高位A7立即出现在数据线DATEOUT上,之后的数据在时钟I/OCLOCK的下降沿改变,可在I/O CLOCK的上升沿读取数据。
读完8位数据后,ADC开始转换这一次采样的信号(B),以便下一次读取。
转换时片选信号CS/要置高电平。
设计操作时序是要注意Tsu(CS).Tconv及I/O CLOCK的频率几个参数。
Tsu(CS)为CS/拉低到I/O CLOCK第一个时钟到来时间,至少要1.4微秒;Tconv为ADC的转换时钟,不超过17微秒,I/O CLOCK不能超过1.1MHz。
图1TLC549访问时序
由于ADC是8位的,所以采样的电压值为:
V=(D/256)×Vref
其中V为采样的电压值,D为ADC转换后读取的8位二进制数,V为参考电压值,这里是2.5V。
4.参考步骤
1)启动QuartusⅡ建立一个空白工程,然后命名为tlc549adc.qpf.
2)新建Verilog HDL源程序文件adc.v,写出程序代码并保存,进行综合编译,若在编译过程中发现错误,则找出并更正错误,知道编译成功为止。
3)建立波形仿真验证,验证仿真结果是否与设计相符合,如果不符合,需重新设计文件,在进行综合编译,仿真。
直到仿真结果与设计相符合为止。
4)新建图形设计文件进行硬件测试,命名为tlc549adc.bdf并保存。
其模块原理图如图2所示。
scan_led模块参照动态数码管显示。
图2TLC549的采样控制顶层模块
5)选择目标器件并对相应的引脚进行锁定,在这里所选择的器件为Altera公司Cyclonell系列的EP2C35F672C8芯片,引脚锁定方法如表1所列。
将未使用的引脚设置为三态输入(一定要设置,否则可能会损毁芯片)。
表1引脚锁定方法
信号
引脚
信号
引脚
信号
引脚
信号
引脚
Seg0
J8
Seg7
L10
Dig4
J3
Adc_clk
U5
Seg1
M3
Seg6
L9
Dig5
K4
Cs_n
Ad4
Seg2
K6
Dig0
L6
Dig6
L3
Sdat_in
T6
Seg3
J6
Dig1
K5
Dig7
M4
Seg4
U10
Dig2
G3
clock
B13
Seg5
N9
Dig3
G4
Clock0
N2
7)将tlc549adc.bdf设置为顶层实体。
对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,知道编译成功为止。
8)确保数字信号源(B4区域)的JP11的短路帽是处于ON位置,JP7中CLOCK0的短路帽处于1HZ位置;把程序下载到FPGA器件中,调节电位器W1,用万用表测电压档测量模数转换器信号输入端的电压(两表笔分别接ADIN.VSSA两个测试点,测试点位于“串行模数转换”区域内),观察数码管1/2的数值,将数码管的数据转换计算后与万用表的读数做比较。
5.实验参考程序
程序清单 TCL549ADC采样控制程序
//注意程序后面的注释文字可以不抄
文件名:
adc.v
moduleadc(clock,reset,enable,sdat_in,adc_clk,cs_n,data_ready,data_out);//I/O口声明
inputclock;//系统时钟
inputreset;//复位,高电平有效
inputenable;//转换使能
inputsdat_in;//TLC549串行数据输入
outputadc_clk;//TLC549I/O时钟
outputcs_n;//TLC549片选控制
outputdata_ready;//指示有新的数据输出
output[7:
0]data_out;//AD转换数据输出
//I/O寄存器
regadc_clk_r;
regcs_n_r;
regdata_ready_r;
reg[7:
0]data_out_r;//AD转换数据输出
regsdat_in_r;//数据输出锁存
//内部寄存器
reg[7:
0]q;//移位寄存器,用于接收或发送数据
reg[2:
0]adc_state;//状态机ADC
reg[2:
0]adc_next_state;
reg[5:
0]bit_count;//移位计数器
regbit_count_rst;//ADC时钟计数器全能控制
regdiv_clk;
reg[CLK_DIV_BITS-1:
0]clk_count;//时钟分频计数器
regbuf1,buf2;
//内部信号
wireready_done;//cs_n拉低(大于1.4us)后的标志
wirerec_done;//数据读取完毕的标志
wireconv_done;//数据转换完毕的标志
//计时器参数
//以下参数值按50MHz时钟计算
parameterCLK_DIV_VALUE=31;//ADC时钟计数器(大于404nS)计数值
parameterCLK_DIV_BITS=5;//ADC时钟计数器位宽
//状态机M1状态参数表
parameteridle=3'b000,
adc_ready=3'b001,
adc_receive=3'b011,
adc_conversion=3'b010,
adc_data_load=3'b110;
//**********************************************************
//I/O寄存器输出
assignadc_clk=adc_clk_r;
assigncs_n=cs_n_r;
assigndata_out=data_out_r;
assigndata_ready=data_ready_r;
//同步输入数据信号
always@(posedgeclock)
begin
sdat_in_r<=sdat_in;
end
//**********************************************************
//时钟分频计数器
always@(posedgeclock)
begin
if(reset==1'b1)
clk_count<=5'd0;
else
begin
if(clk_count begin clk_count<=clk_count+1'b1; div_clk<=1'b0; end else begin clk_count<=5'd0; div_clk<=1'b1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 系统 设计 VHDL 实验 授课 计划 11 本科
![提示](https://static.bdocx.com/images/bang_tan.gif)