VLSI/SoC设计综合实验(★)

在这里插入图片描述

VLSI/SoC设计综合实验OVERVIEW

作者: Saint
掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a
微博:https://weibo.com/5458277467/profile?topnav=1&wvr=6&is_all=1
GitHub:github.com/saint-000

一、实验相关原理
ModelSIM使用流程和方法
ISE使用流程和方法
FPGA原理
其他

二、实验内容与步骤预习纲要:

(1)交通灯实验

模拟路口交通信号灯的红、黄、绿灯的变化过程,分别用三个LED灯表示,并在数码管上动态显示当前状态剩余时间。要求红灯持续时间为30秒,黄灯5秒,绿灯30秒。

(2)数字时钟实验

完成一个数字时钟的设计,数字时钟具有显示时、分、秒的功能,24小时制式,即能显示范围为00:00:00至23:59:59,使用八个8段数码管,可用数码管的小数点位代替“:”。数字时钟具有复位功能。并下载该设计到FPGA进行实验验证。

(3)FIR滤波器设计

设计一个FIR滤波器:输出y[n]=0.5x[n]+0.31x[n-1]+0.63*x[n-2]。其中x[n],x[n-1],x[n-2]为3位二进制整数,计算结果用十进制数显示、保留一位小数。

(4)I²C接口EEPROM存取实验 

拨动开发板上的拨码开关设定数据;按下一个按键,FPGA将拨码开关的数据写入EEPROM(具有I²C接口)的某个地址;按下另外一个键,将刚写入EEPROM的数据读回FPGA,并在数码管上显示。

三、使用的实验仪器(设备、元器件):
FPGA开发板一套
JTAG下载线一根
USB供电线一根
自选实验可以使用自带的开发板

四、实验室安全操作事项
1.安全操作的重要性和必要性学习的目的是消除一切使设备遭到损坏、使环境遭到污染的因素或现象,避免设备事故的发生,保证实验安全。

2.拔插开发板上的跳线帽时,需要切断开发板的电源。

3.操作人员必须严格按设备操作指导书和安全操作规程进行作业,注意设备本身及设备运行中的安全,特别要重视安全装置的检查和使用。

4.在电器仪表使用过程中,如发现有不正常声响,局部温升或嗅到绝缘漆过热产生的焦味,应立即切断电源,并报告教师进行检查。

5.实验室不允许带食品和饮料入内,并要注意保持卫生清洁和过道通畅,不拥挤,不大声喧哗,有序地开展实验的各项工作。

五、思考题
1.通过数码管进行动态显示的原理是怎样的?

动态显示是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的IO线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的IO端口,而且功耗更低。

2.怎样实现从二进制数到数码管上要显示的十进制数的转换?
也就是二进制转换为一个BCD码数
1、BCD码有0~9共计10个数码,用四位二进制表示0000~1001即可表示,而四位二进制可以表示数的范围为0000~1001~1111,即0~9~15。总计多处了 6个数码A~F。

十进制逢十进一,十六进制逢十六进一。从而产生了一个非常关键的问题,转换到大于等于10以后的数字后本应由低位向紧邻的高位进位,但是只能到大于16以后进位。

如DH(12D)十进制本应进位产生十位1,和个位2,但是却变成十六进制的DH。所以必须进行修正,修正的方法是加6。

2、BCD码是二进制编码的十进制,逢十进一,10/2=5.因此得到判断条件,即判断每四位是否大于4,因为5-9进一位(左移)溢出。

3、对于左移操作,相当于每进一位就会丢掉6,那么就要加上6/2=3(3左移一位后相当于6)。每次调整在左移之前完成。

3.怎样实现一秒种的计时?
利用分频器,可以直接将40mhz的时钟源分频成1hz实现1s计数

 process(clk_40mhz)   
variable cnt_1:std_logic_vector(25 downto 0):= "00000000000000000000000000";
begin
if clk_40mhz'event and clk_40mhz='1' then
if cnt = "10011000100101101000000000" then	 
cnt_1:="00000000000000000000000000";
temp_1<='1';
else cnt := cnt_1+1;
temp_1<= '0';
end if;
end if ;
end process ;  	 
clk_1hz	<= temp_1;

六、可能遇到的问题:

1、由于使用有限状态机进行设计,状态转换时会遇到转换滞后一个时钟的问题,其根本原因是不能做到异步转换。
2、在分模块的时候每个模块的波形仿真加激励怎么才能最好的体现模块功能效果。
3、如何使用chipscope功能在FPGA内部在线debug。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值