欢迎来到天天文库
浏览记录
ID:39469715
大小:627.00 KB
页数:10页
时间:2019-07-04
《VLSI课程设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《VLSI设计基础》课程设计报告班级:电子10-02班学号:1006040208姓名:指导教师:108位移位寄存器设计一、设计要求1.查阅书籍资料,根据题目要求确定电路结构;2.明确电路实现的功能;3.明确电路中端口的数目、所联接的信号类型以及工作时序;4.采用Modelsim、QuartusII、Altiumdesigner中的任一种软件,基于Verilog或VHDL语言设计综合设计题目中电路,实现功能仿真。二、设计目的1.培养学生综合运用所学知识独立完成课题的工作能力,为毕业设计打好基础;2.培养学生从文
2、献和调查研究中获取知识的能力,提高学生从别人经验,从其他学科找到解决问题的新途径的悟性;3.培养学生综合运用本专业基本理论、基本知识和基本技能的能力,使学生获得从事本专业工程技术工作的基本训练;4.培养学生勇于探索,严谨推理,实事求是,用实践来检验理论、全方位地考虑问题等科学技术人员应具有的素质;5.提高学生对工作认真负责、一丝不苟,对同学友爱团结、协作攻关,对新事物能潜心考察,勇于开拓,勇于实践的基本素质。三、设计的具体实现1.电路概述此电路由8个4选1数据选择器、8个带异步清零的D触发器组成。所有的数据选
3、择器编码端分别对应地接在一起,同时选择D触发器的信号数据来源。D触发器时钟端CP接一起,清零端也同样接在一起,这样可以保证级联D触发器的同步,和并行输出数据的清零。另,每个D触发器的输出对应一位并行输入。Dsr是右移串行数据输入端,Dsl是左移串行数据输入端,分别接最低有效位对应的数据选择器和最高有效位对应的数据选择器。10图38位双向移位寄存器表28位双向移位寄存器真值表输入输出清零控制信号串行输入时钟CP并行输入S1S0DsrDslLLHLLHLHLHLHHHHLLHHLHHHH注:表示CP脉冲上升沿之前
4、瞬间的电平102.设计综合电路1)设计流程a)编写源代码。打开QuartusII软件平台,点击File中得New建立一个文件。编写的文件名与实体名一致,点击File/Saveas以“.vhd”为扩展名存盘文件;b)按照实验箱上FPGA的芯片名更改编程芯片的设置。操作是点击Assign/Device,选取芯片的类型;c)编译与调试。确定源代码文件为当前工程文件,点击Complier进行文件编译。编译结果有错误或警告,则将要调试修改直至文件编译成功;d)波形仿真及验证。在编译成功后,点击Waveform开始设计波
5、形。点击“insertthenode”,按照程序所述插入节点。e)时序仿真。将波形区域分段显示,如每个10.0ns重复一次步骤四,分别设置不同的a,b的输入波形,点击保存按钮保存,从而得出相应的结果,最后形成完整的连续的时序仿真图。2)程序源代码ENTITYshifterISPORT(data_in:INSTD_LOGIC_VECTOR(7DOWNTO0);--输入的数据n:INSTD_LOGIC_VECTOR(2DOWNTO0);--移位的数量dir:INSTD_LOGIC;--移动的方向0:左1:右kin
6、d:INSTD_LOGIC_VECTOR(1DOWNTO0);--移动类型00:算术移01:逻辑移10:循环移clock:INBIT;--手动时钟PULSEdata_out:OUTSTD_LOGIC_VECTOR(7DOWNTO0)--移位的结果);ENDshifter;ARCHITECTUREbehavofshifterISBEGINPROCESS(data_in,n,dir,kind)VARIABLEx,y:STD_LOGIC_VECTOR(7DOWNTO0);10VARIABLEctrl0,ctrl1,
7、ctrl2:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIF(clock'EVENTANDclock='1')THEN--产生控制向量ctrlctrl0:=n(0)&dir&kind(1)&kind(0);ctrl1:=n(1)&dir&kind(1)&kind(0);ctrl2:=n(2)&dir&kind(1)&kind(0);CASEctrl0ISWHEN"0000"
8、"0001"
9、"0010"
10、"0100"
11、"0101"
12、"0110"=>x:=data_in;--n=0时不移动WH
13、EN"1000"=>x:=data_in(6DOWNTO0)&data_in(0);--算术左移1位WHEN"1001"=>x:=data_in(6DOWNTO0)&'0';--逻辑左移1位WHEN"1010"=>x:=data_in(6DOWNTO0)&data_in(7);--循环左移1位WHEN"1100"=>x:=data_in(7)&data_in(7DOWNTO1);--算术右移1位WH
此文档下载收益归作者所有