序列发生器.docx
《序列发生器.docx》由会员分享,可在线阅读,更多相关《序列发生器.docx(14页珍藏版)》请在冰豆网上搜索。
![序列发生器.docx](https://file1.bdocx.com/fileroot1/2022-11/26/5c84f4f6-9263-4404-88a0-11d64ecc89b9/5c84f4f6-9263-4404-88a0-11d64ecc89b91.gif)
序列发生器
课程设计任务书
学生:
险峰专业班级:
电子科学与技术1002班
指导教师:
屏工作单位:
信息工程学院
题目:
序列信号发生器
要求完成的主要任务:
1设计一个有限状态机,用以产生输出序列“1110101101”由左开场。
〔1〕画出状态转换图;
〔2〕使用VHDL语言编程;
〔3〕使用EPM7128SLC84-15芯片
〔4〕检测输出序列信号
2将所设计的整个系统写入CPLD器件中,加上需要的外围电路在实验箱上实现整个系统的硬件搭建,并调试出结果。
时间安排:
1、2012年12月17日集中,作课程设计的任务布置。
2、2012年12月18日至2012年12月21日,进展课程设计,软件编程、仿真和调试。
3、2012年12月22日,机房检查仿真结果,验证设计的可行性和正确性。
4、2012年12月23日,熟悉实验平台和试验箱。
5、2012年12月24日至2012年12月26日,进展设计的硬件调试。
6、2012年12月27日至2012年12月28日,实验室检查设计成果,现场
演示硬件实物,提交设计说明书及辩论。
指导教师签名:
年月日系主任〔或责任教师〕签名:
年月日
摘要
序列信号是把一组0、1数码按一定规那么顺序排列的串行信号,可以做同步信号、地址码、数据等,也可以做控制信号,而序列发生器就是产生一系列特定的信号的仪器。
本文详细介绍了基于FPGA开发环境QuartusⅡ,用VHDL语言编程实现序列发生器的方法和过程。
通过仿真和实验实现了序列发生器产生特定的序列。
关键词:
序列发生器,FPGA,QuartusⅡ,VHDL
Abstract
Signalsequenceisagroupof0,1digitalserialsignalarrangedaccordingtocertainrulesoforderandcandothesyncsignal,theaddresscode,data,controlsignalscanalsobedonewhilethesequenceristoproduceaseriesofspecificsignalinginstruments.ThispaperdescribesthemethodsandprocessesbasedFPGAdevelopmentenvironment,theQuartusIIsequencer,usingtheVHDLlanguage.Throughsimulationandexperimentalrealizationofasequencegeneratortogenerateaspecificsequence.
Keywords:
Sequencer,FPGA,QuartusⅡ,VHDL
绪论
随着电子工程和计算机科学(EECS)的迅猛开展,数字电路系统的开展也十分迅速。
电子器件在最近几十年经历了从小规模集成电路到中、大规模集成电路的开展历程。
从简单的可编程器件到高密度可编程器件。
设计方法也在从根本上转变。
由原来的手工设计开展到现在的电子设计自动化EDA(ElectronicDesignAutomation)技术。
EDA技术就是依赖功能强大的计算机。
在EDA工具软件平台上.以硬件描述语言VHDL(VeryHighSpeedInte-gratedCircuitHardwareDescriptionLanguage)为系统逻辑捕述手段。
自顶而下地逐层完成相应的描述、综合、优化、仿真与验证,直至生成器件。
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL〔AlteraHardwareDescriptionLanguage〕等多种设计输入形式,嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、Exe-mplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供给商的开发工具相兼容。
改良了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLV-iewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统〔SOPC〕开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
1.EDA的简述
1.1EDA技术的概念
EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进展电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开场设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC幅员或PCB幅员的整个过程的计算机上自动处理完成。
现在对EDA的概念或畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。
本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。
1.2VHDL语言
VHDL语言:
超高速集成电路硬件描述语言〔VHSICHardwareDeseriptionLanguagt,简称VHDL〕,是IEEE的一项标准设计语言。
它源于美国国防部提出的超高速集成电路〔VeryHighSpeedIntegratedCircuit,简称VHSIC〕计划,是ASIC设计和PLD设计的一种主要输入工具。
1.3QuartusII的概述
QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL〔AlteraHardwareDescriptionLanguage〕等多种设计输入形式,嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
2.设计指标要求
设计一个有限状态机,用以产生输出序列“1110101101〞由左开场。
〔1〕画出状态转换图
〔2〕使用VHDL语言编程
〔3〕使用EPM7128SLC84-15芯片
3.序列发生器的设计
在数字信号的传输和数字系统的测试中,有时需要使用由一组特定的串行数字信号来产生序列信号的电路,这种电路成为序列信号发生器。
3.1状态转化图
1111
10
0
01101
图状态转化图
图序列信号状态转换图
3.2设计方案论证
方案一
有限状态机及其设计技术室实用数字系统设计中的重要组成局部,也是实现高效率高可靠逻辑控制的重要途径。
实验箱的频率为50MHz,为了能更好的观察实验结果,利用分频器将频率变为1Hz,编写程序调试完毕后进展仿真,由于输入的信号时50MHz而输出的信号是1Hz,数量级相差太大,仿真现象无法观察,现象不明显。
分频器程序如下:
signalfen:
std_logic_vector(24downto0);
process(clk)
begin
if(clk'eventandclk='1')then
fen<=fen+1;
endif;
endprocess;
q1<=fen(24);
为了产生所要求的序列,先设定好各个状态的值
constants0:
std_logic:
='1';
constants1:
std_logic:
='1';
constants2:
std_logic:
='1';
constants3:
std_logic:
='0';
constants4:
std_logic:
='1';
constants5:
std_logic:
='0';
constants6:
std_logic:
='1';
constants7:
std_logic:
='1';
constants8:
std_logic:
='0';
constants9:
std_logic:
='1';
当复位端“clr=’0’〞时,将st0的状态赋给当前状态,当“clr=’1’〞时,且时钟的上升沿到来时,将下一个状态的值赋给当前状态。
if(clr='0')then
p<=st0;
elsif(q1'eventandq1='1')then
p<=n;
这样便可实现序列发生器的功能。
方案二
除了使用有限状态机来产生序列信号,也可以简单的使用ifelse语句实现功能。
首先用分频器分频,然后便可用ifelse语句写入序列。
process(q,res)
begin
if(q'eventandq='1')then
ifres='0'then
y<='0';
reg<="1110101101";
else
y<=reg(9);
reg<=reg(8downto0)®(9);
endif;
endif;
endprocess;
方案三
产生序列信号的序列发生器既可以由VHDL语言构成,也可由计数器与数据选择器构成。
因为序列信号有时为10位,所以计数器为10进制计数器,计数器的设计程序如下:
if(q'eventandq='1')then
ifn="1001"then
n<="0000";
else
n<=n+1;
endif;
endif;
再由C:
\alters\80\quartus\libraries库目录中的others中的MAXplus2原件库定义一个16选1选择器,利用这两个器件合成序列发生器。
由计数器的输出端
Qout[3..0]供给数据选择器所需要的选择控制信号sel[3..0],选择器的数据输入端接入固定数据,此数据在地址信号的连续选择下,从选择器串口y顺序输出,生成序列码“1110101101”。
图.方案三总电路图
3.3仿真图
新建一个VectorWaveformFiles,在NAME区域选择右键菜单中的InsertNodeorBus,点击List按钮,在左边的List菜单里选择要观察波形的端口名,点击“>〞符号将其选入右边的列表里。
点击OK,再确定回到VectorWaveformFiles界面。
然后设置输入端口信号,选择Processing菜单中选择SimulatorTool,Simulatormodel选择Functional,点击右面的按钮,然后点击下面的开场仿真,即可观察到如下波形。
图3.3.仿真图
3.4实物演示结果
图3.4.示波器仿真图
4.心得体会
电子线路EDA课程设计也接近的尾声。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究教师给的题目,其次,对教师讲解的题目要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
本次电子线路EDA课程设计至此已经接近尾声,整个课程设计过程中,对EDA这个课程有了更深的了解,认识到QuartusII这个软件功能之强大。
因为课程设计本身要求将以前所学的理论知识运用到实际的电路设计当中去。
在这两周来,也暴露了自己很多问题,第一、不够细心比方由于粗心大意敲错代码,由于对课本理论的不熟悉导致编程出现错误。
第二,是在学习态度上,这次课设是对我的学习态度的一次检验,课设虽然简单,但是简单的事情更容易暴露自身的问题。
作为一名电子技术员,要求具备的首要素质绝对应该是严谨。
我们这次实习所遇到的多半问题多数都是由于我不够严谨。
第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。
在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。
5致
感学校给我们这次时机,锻炼了我们的动手能力。
通过这次课设让我明白了理论和实际操作之间差距,而且也让我很明确得意识到自己在EDA有很多的缺乏,以后应该多钻研一下。
同时也感指导教师在设计过程中的辅导以及同学的帮助。
再次感教师的辅导以及同学的帮助,是他们让我有了一个更好的认识,无论是学习还是生活,生活是实在的,要踏实走路。
课程设计时间虽然很短,但我学习了很多的东西,使我眼界翻开,感受颇深。
6.参考文献
[1]松,黄继业.《EDA技术与VHDL设计》.清华大学高等教育,2007.
[2]章彬宏.《EDA应用及技术》.理工大学,2007.
[3]亦华,延明.邮电大学,2003.
[4]夏路易.《基于EDA的电子技术课程设计》.电子工艺,2009.
[5]王金明.《数字系统设计VerilogHDL》.电子工艺,2009.
附录1:
libraryieee;
entityXVLIEis
port(
clk:
instd_logic;
clr:
instd_logic;
qout:
outstd_logic;
led:
outstd_logic);
endXVLIE;
architecturebhvofXVLIEis
typestateis(st0,st1,st2,st3,st4,st5,st6,st7,st8,st9);
signalfen:
std_logic_vector(24downto0);
signalq,q1:
std_logic;
signalp,n:
state;
constants0:
std_logic:
='1';
constants1:
std_logic:
='1';
constants2:
std_logic:
='1';
constants3:
std_logic:
='0';
constants4:
std_logic:
='1';
constants5:
std_logic:
='0';
constants6:
std_logic:
='1';
constants7:
std_logic:
='1';
constants8:
std_logic:
='0';
constants9:
std_logic:
='1';
begin
process(clk)
begin
if(clk'eventandclk='1')then
fen<=fen+1;
endif;
endprocess;
q1<=fen(24);
led<=notq1;
process(clk,clr)
begin
if(clr='0')then
p<=st0;
elsif(q1'eventandq1='1')then
p<=n;
endif;
endprocess;
process(p)
begin
casepis
whenst0=>q<=s0;
n<=st1;
whenst1=>q<=s1;
n<=st2;
whenst2=>q<=s2;
n<=st3;
whenst3=>q<=s3;
n<=st4;
whenst4=>q<=s4;
n<=st5;
whenst5=>q<=s5;
n<=st6;
whenst6=>q<=s6;
n<=st7;
whenst7=>q<=s7;
n<=st8;
whenst8=>q<=s8;
n<=st9;
whenst9=>q<=s9;
n<=st1;
whenothers=>null;
endcase;
endprocess;
qout<=notq;
endbhv;
附录2:
libraryieee;
entityxvlieis
port(res,clk:
instd_logic;
y1,led:
outstd_logic);
endxvlie;
architectureoneofxvlieis
signalfen:
std_logic_vector(24downto0);
signalreg:
std_logic_vector(9downto0);
signalq,y:
std_logic;
begin
process(clk)
begin
if(clk'eventandclk='1')then
fen<=fen+1;
endif;
endprocess;
q<=fen(24);
led<=notq;
process(q,res)
begin
if(q'eventandq='1')then
ifres='0'then
y<='0';
reg<="1110101101";
else
y<=reg(9);
reg<=reg(8downto0)®(9);
endif;
endif;
endprocess;
y1<=noty;
endone;
附录3:
libraryieee;
entityxvlieis
port(clk:
instd_logic;
led:
outstd_logic;
qout:
outstd_logic_vector(3downto0));
endxvlie;
architectureoneofxvlieis
signalfen:
std_logic_vector(24downto0);
signalq:
std_logic;
signaln:
std_logic_vector(3downto0);
begin
process(clk)
begin
if(clk'eventandclk='1')then
fen<=fen+1;
endif;
endprocess;
q<=fen(24);
led<=notq;
process(q)
begin
if(q'eventandq='1')then
ifn="1001"then
n<="0000";
else
n<=n+1;
endif;
endif;
endprocess;
qout<=n;
endone;
本科生课程设计成绩评定表
姓名
险峰
性别
男
专业、班级
电子科学与技术1002班
课程设计题目:
序列发生器
课程设计辩论或质疑记录:
成绩评定依据:
最终评定成绩〔以优、良、中、及格、不及格评定〕
指导教师签字:
年月日