FPGA(1)--VHDL--6选1数据选择器

简介: FPGA(1)--VHDL--6选1数据选择器

一、实验目的



掌握用VHDL语句进行组合电路设计的方法,并熟悉程序的编译、调试与波形图的仿真。


二、实验内容



分别用VHDL的CASE语句及IF语句两种方法,设计6选1数据选择器。通过编译、仿真验证功能正确性。


三、实验设计



设计的依据:教材上3.3.1给出了“基于CASE语句的4选1多路选择器表述”,如下为“4选1多路选择器”的VHDL描述和功能描述。


2021071419591422.png


实验设计:根据“4选1多路选择器”的设计思路,考虑到“6选1多路选择器”有6个输入端口,则需要有三个通道选择控制信号端,一个输出端y。当s2&s1&s0分别为000、001、010、011、100、101时,输出端y将分别输出来自输入口a、b、c、d、e和f的数据。又考虑到三个通道选择控制信号组合成了8种情况,而前6种均有对应的操作,而后两种情况(110和111)没有对应的操作,可以使其情况下输出为高阻态。如下分别给出使用if选择语句和case选择语句的“6选1多路选择器”的VHDL描述和相关语句的解释。


20210714200534268.png20210714200658539.png


四、实验结果及仿真



分别对a-f和s2-s0设置合适周期的方波信号输入,观察y输出信号。如下图所示。


20210714200745323.png


观察输入与输出的波形可以分析出“6选1多路选择器”的功能已经实现。即当s2&s1&s0分别为000、001、010、011、100、101时,输出端y将分别输出来自输入口a、b、c、d、e和f的数据。


五、实验思考与总结



关于VHDL语言:VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。在我理解中,VHDL语言是一种更形象化的C语言,其编程格式类似于C语言那样,但其面向硬件使其较为形象化,且对程序本身的完整性提出了更高的要求,在大部分情况下,程序每个部分都需要“有头有尾”,即“End+”的存在。


关于“X选1多路选择器”:其中的X可以通过设计选择控制信号端来实现,而选择器的VHDL程序的核心部分即为if/case选择语句,其两者各有优缺,对于情况较多的情况,我认为使用case语句更加简介方便。


以下请忽略!


import numpy as np
import matplotlib.pyplot as plt
import matplotlib
list=[[1,2,3,4,5,6],[2,4,6,8,10,12],[1,3,5,7,9,11],[1.1,2.2,3.3,4.4,5.5,6.6],[3,6,9,12,15,18],[4,8,12,16,20,24
],[5,10,15,20,25,30],[1.5,2.5,3.5,4.5,5.5,6.5],[1,4,7,10,13,16],[2,5,8,11,14,17]]
a=np.array(list)
std=[]
avg=[]
x=[1,2,3,4,5,6,7,8,9,10]
for i in range(0,len(list)):
    std.append(np.std(a[i]))
    avg.append(np.mean(a[i]))
fig=plt.figure()
plt.xticks(x,x)
plt.plot(x,avg,marker="o",color='#858687',markeredgecolor='black',linewidth=3,label="Mean Value")
for i in range(len(avg)):
    plt.text(x[i],avg[i],avg[i],fontsize=10)
y1=[]
y2=[]
for i in range(len(x)):
    y1.append(avg[i]+std[i]/2)
    y2.append(avg[i] - std[i] / 2)
plt.fill_between(x,y1,y2,color='#d2e3f0',label="Standard deviation")
plt.grid()
plt.legend(loc=2)
plt.show()



相关文章
|
Android开发 异构计算
nios ii FIFO读取FPGA数据交互实验1
nios ii FIFO读取FPGA数据交互实验1
258 0
nios ii FIFO读取FPGA数据交互实验1
|
存储 算法 异构计算
基于FPGA的ECG心电信号峰值检测和心率计算,包括testbench测试文件和ECG数据转换为coe文件程序
基于FPGA的ECG心电信号峰值检测和心率计算,包括testbench测试文件和ECG数据转换为coe文件程序
|
存储 算法 异构计算
m基于FPGA的数据串并并串转换系统verilog实现,包含testbench,可以配置并行数量
m基于FPGA的数据串并并串转换系统verilog实现,包含testbench,可以配置并行数量
373 0
|
算法 网络协议 安全
m基于DE2-115开发板的网口UDP数据收发系统FPGA实现
m基于DE2-115开发板的网口UDP数据收发系统FPGA实现
263 0
|
10天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的1024QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的1024QAM调制解调系统的仿真与实现。通过Vivado 2019.2进行仿真,分别在SNR=40dB和35dB下验证了算法效果,并将数据导入Matlab生成星座图。1024QAM调制将10比特映射到复数平面上的1024个星座点之一,适用于高数据传输速率的应用。系统包含数据接口、串并转换、星座映射、调制器、解调器等模块。Verilog核心程序实现了调制、加噪声信道和解调过程,并统计误码率。
31 1
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的64QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的64QAM调制解调通信系统的设计与实现,包括信号生成、调制、解调和误码率测试。系统在Vivado 2019.2中进行了仿真,通过设置不同SNR值(15、20、25)验证了系统的性能,并展示了相应的星座图。核心程序使用Verilog语言编写,加入了信道噪声模块和误码率统计功能,提升了仿真效率。
44 4
|
1月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。

热门文章

最新文章