串行输入并行输出的移位寄存器-EDA仿真

合集下载

第8章 常用EDA软件介绍

第8章 常用EDA软件介绍

第八章 常用EDA软件介绍
5) 查看元件属性 ViewDraw中所有的元件除了有一个惟一的标识符以
外, 还拥有属性(Properties)。 设计元件会拥有名称
(Name)和特性(Attribute), 某些部件可能还包括管 脚(Pin), 这些管脚可能又拥有它们自己的名称和属性。
(1) 选中一个元件, 点击鼠标右键, 弹出一个菜单。
第八章 常用EDA软件介绍
图 8 – 16 8位串并转换器原理图
第八章 常用EDA软件介绍
3) 确认设计中的元件
所有ViewDraw的原理图都由不同的设计元件组成, 如元件、 连线、 总线等。 把鼠标的指针放在一个基本 元件上, 点击鼠标左键, 就可以很快地确认这个元件。 点亮这个基本元件, 在原理图窗口的左下角就会显示 出这个元件的名称。
图8 - 15所示。
第八章 常用EDA软件介绍
图 8 - 13 ViewDraw的绘图界面
第八章 常用EDA软件介绍
图 8 - 14 New对话框
第八章 常用EDA软件介绍
图 8 - 15 一个新的设计文件
第八章 常用EDA软件介绍
2) 关于8位串并转换器 8位串并转换器电路的逻辑功能是实现串行输入并
第八章 常用EDA软件介绍
创建工程 ↓
←→Dashboard ←→ ViewDraw ←→ Schemetic Check
绘制电路图
↓ 验证电路图 ↓ 仿真
←→ Fusion

网表文件传给PCB生产方 ←→ Creat PCB Netlist
第八章 常用EDA软件介绍
1. 建立工程(Project Setup) 1) 关于工程
在使用eProduct Designer进行设计时, 首先必须创

移位寄存器串入并出与并入串出

移位寄存器串入并出与并入串出

移位寄存器串入并出与并入串出在数字电路中,移位寄存器(英语:shift register)是一种在若干相同时间脉冲下工作的触发器为基础的器件,数据以并行或串行的方式输入到该器件中,然后每个时间脉冲依次向左或右移动一个比特,在输出端进行输出。

这种移位寄存器是一维的,事实上还有多维的移位寄存器,即输入、输出的数据本身就是一些列位。

实现这种多维移位寄存器的方法可以是将几个具有相同位数的移位寄存器并联起来。

移位寄存器的输入、输出都可以是并行或串行的。

它们经常被配置成串入并出(serial-in, parallel-out, SIPO)的形式或并入串出(parallel-in, serial-out, PISO),这样就可以实现并行数据和串行数据的转换。

当然,也有输入、输出同时为串行或并行的情况。

此外,还有一些移位寄存器为双向的,也就是说它允许数据来回传输,输入端同时可以作为输出端,输出端同时也可以作为输入端。

如果把移位寄存器的串行输入端,和并行输出端的最后一位连接起来,还可以构成循环移位寄存器(circular shift register),用来实现循环计数功能。

串入并出串入并出形式的移位寄存器接法,可以将输入的串行数据以并行格式输出。

串行通信要求的几位数据完成输入之后,就可以在输出端的各位同时读出并行数据。

并入串出并入串出形式的移位寄存器接法,通过下图所示D1-D4并行输入段接收4位外部并行数据,而Q为串行输出的引脚。

为了将数据写入到寄存器中,写/移位控制线必须保持低电平。

写入完成,需要移位时,写/移位控制线则必须处于高电平,而且必须给予时间脉冲,每提供一个时间脉冲,向左(或向右)移动一位。

EDA课程设计报告---串入并出移位寄存器

EDA课程设计报告---串入并出移位寄存器

EDA课程设计报告设计课题:1、串入并出移位寄存器2、译码器3、数字钟专业班级:电子信息工程08-1班串入并出移位寄存器一、设计任务与要求1.设计一个4位的串入并出移位寄存器;2.要求能分别输入两组4位数据,同时输出显示。

二、方案设计与论证移位寄存器除了具有存储代码的功能以外,还具有移位功能。

所谓移位功能,是指寄存器里存储的代码能在移位脉冲的作用下依次左移或右移。

因此,移位寄存器不但可以用来寄存代码,还可用来实现数据的串并转换、数字的运算以及数据处理等。

所谓的串入/并出移位寄存器,即输入的数据是一个接着一个有序地进入,输出时则一起送出。

两组数据伴随着时钟信号依次输入,输出时消除延时。

三、单元电路设计与参数计算程序代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity sipo isport(d_in:in std_logic;clk:in std_logic;d_out:out std_logic_vector(3 downto 0));end sipo;architecture a of sipo issignal q:std_logic_vector(3 downto 0);beginp1:process(clk)beginif clk'event and clk='1'thenq(0)<=d_in;for i in 1 to 3 loopq(i)<=q(i-1);end loop;end if;end process p1;d_out<=q;end a;四、总原理图及元器件清单1.总原理图1.元件清单(或程序清单)五、安装与调试输入的数据为“1010”、“0111”两组4 位数据。

因输入的数据是每次一位依序进入,故输入、输出信号之间有 4 个CLK 时间的延迟。

EDA_VHDL_并入串出移位寄存器

EDA_VHDL_并入串出移位寄存器
WAIT; END PROCESS init; …
… always : PROCESS -- optional sensitivity list -- ( ) -- variable declarations BEGIN wait for 50ns; clk<=not clk; END PROCESS always; …
--load=0则预置数
elsif clk’event and clk=’1’then
qq(7 downto 1)<=qq(6 downto 0);
end if;
y<=qq(7); --高位赋予串行输出端口
dataout<=qq;
end process;
end yw_arch;
--否则上升沿到 --左移
init : PROCESS
-- variable declarations
BEGIN
wait for 100ns;load<='1';
wait for 100ns;data<="10010110";
wait for 100ns;load<='0';
wait for 100ns;load<='1'; -- code that executes only once
Template Writer 新建test bench文件,作为 modelsim仿真的测试平台;根据需求修改test bench文件
并入、并出和串出移位寄存器
5.通过AssignmentsSettingSimulation Compile test bench添加仿真测试平台,相关 设置如右图所示

寄存器实验报告

寄存器实验报告

寄存器实验报告一、实验目的1. 了解寄存器的分类方法,掌握各种寄存器的工作原理;2. 学习使用Verilog HDL 语言设计两种类型的寄存器。

二、实验设备PC 微机一台,TD-EDA 实验箱一台,SOPC 开发板一块。

三、实验内容寄存器中二进制数的位可以用两种方式移入或移出寄存器。

第一种方法是以串行的方式将数据每次移动一位,这种方法称之为串行移位(Serial Shifting),线路较少,但耗费时间较多。

第二种方法是以并行的方式将数据同时移动,这种方法称之为并行移位(Parallel Shifting),线路较为复杂,但是数据传送的速度较快。

因此,按照数据进出移位寄存器的方式,可以将移位寄存器分为四种类型:串行输入串行输出移位寄存器(Serial In- Serial Out)、串行输入并行输出移位寄存器(Serial In- Parallel Out)、并行输入串行输出移位寄存器(Parallel In- Serial Out)、并行输入并行输出移位寄存器(Parallel In-Parallel Out)。

本实验使用Verilog HDL 语言设计一个八位并行输入串行输出右移移位寄存器(Parallel In- Serial Out)和一个八位串行输入并行输出寄存器(Serial In- Parallel Out),分别进行仿真、引脚分配并下载到电路板进行功能验证。

四、实验步骤1.并行输入串行输出移位寄存器实验步骤1). 运行Quartus II 软件,选择File New Project Wizard 菜单,工程名称及顶层文件名称为SHIFT8R,器件设置对话框中选择Cyclone 系列EP1C6Q240C8 芯片,建立新工程。

2.) 选择File New 菜单,创建Verilog HDL 描述语言设计文件,打开文本编辑器界面。

3.) 在文本编辑器界面中编写Verilog HDL 程序,源程序如下:module SHFIT8R(din,r_st,clk,load,dout);input [7:0]din;input clk,r_st,load;output dout;reg dout;reg [7:0]tmp;always @(posedge clk)if(!r_st)begindout<=0;endelsebeginif(load)begintmp=din;endelsebegintmp[6:0]=tmp[7:1];tmp[7]=0;enddout<=tmp[0];endendmodule4). 选择File Save As 菜单,将创建的VHDL 设计文件保存为工程顶层文件名SHIFT8R.V。

EDA移位寄存器的功能仿真4

EDA移位寄存器的功能仿真4

一、实验目的1.实现移位寄存器的功能,并学会仿真验证2.定制LPM原件及应用3.掌握电路仿真的基本方法4.掌握混合模块工程设计方法二、实验内容:74194(移位寄存器)功能仿真,了解具体的仿真方法与步骤。

三、实验原理74194是一种典型的中规模集成移位寄存器,由4个RS触发器和一些门电路构成的4位双向移位寄存器。

该移位寄存器具有左移、右移、并行输入数据、保持及异步清零5种功能。

其中A、B、C、D为并行输入端,Qa、Qb、Qc、Qd为并行输出端;SRSI为右移串行输入端,SLSI为左移串行输入端;S1、S0为模式控制端;CLRN为异步清零端;CLK为时钟脉冲输入端。

四、实验步骤实验过程如下:用一片74194芯片连接好功能验证电路,如下图所示:画好验证电路图之后就进行功能仿真,具体的仿真步骤:1)新建波形文件后的波形图参数设置设置网格宽度Grid size和时间轴长度End time 。

这两个参数是波形图的基本参数。

添加节点前设置好参数可以减少波形图重复调整的时间开销。

网格宽度和时间周期密切相关,通常设置为时钟周期的四分之一,二分之一或者整数倍。

时间轴长度默认为1us,需要配合网格保证充裕的仿真时间。

此处设置为时钟的二分之一。

2)添加节点或总线后的信号整合和位置分配添加节点或总线后的VWF文件如下图所示,信号杂乱需要重新调整位置和整合信号位置分配注意:激励输入信号(I类)和待分析的输出信号(O类R类C类)上下放置,界限分明;时钟信号置顶,其他输入信号按“异步控制,同步控制,数据输入”顺序向下放置;同一元器件的控制信号就近放置;同一功能的控制信号就近放置。

重新调配后的图形如下所示:然后进行信号整合,把信号整合成总线,整合注意:符合总线形式的I/O 信号优先整合;同一器件和同一属性的控制信号优先整合;脉冲信号一般不整合;整合前信号应按“高位->低位”顺勋乡向下放置;整合后信号名以能直观反映该信号功能为宜。

EDA 实验报告

EDA 实验报告

4-1 组合电路设计实验目的:熟悉Quartus2的VHDL文本设计流程全过程,学习简单的组合电路的设计,多层次电路设计、仿真、和硬件测试。

实验任务1:利用软件完成二选一多路选择器的文本编辑和仿真测试等步骤,给出仿真波形,最后在实验系统上进行硬件测试,验证功能。

然后,利用元件例化语句描述图3-31,并将此文件放在同一目录下。

实验任务2:利用刚刚完成的实验内容,设计完成一位全加器,仿真该全加器,得到仿真结果,并利用一位二进制全加器为基本元件,用例化语句写出八位并行二进制全加器的顶层文件,讨论该加法器的电路特性。

实验代码及仿真结果:二选一多路选择器:library ieee;use ieee.std_logic_1164.all;entity mux21a isport(a,b,s: in std_logic;y:out std_logic );end entity mux21a;architecture one of mux21a isbeginprocess(a,b,s)beginif s='0' then y<=a; else y<=b;end if;end process;end architecture one;仿真结果:分析:1、s对电路的输出具有决定作用,s为0时输出为a的值,为1时输出为b的值。

从仿真结果可以看出0到10ns内,s为0,此时y的输出为0,是a的值。

2、10到20ns时间内,s为1,输出为b的值,y为1。

图3-31的仿真仿真程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity singt isport(a:in std_logic_vector(3 downto 1);s:in std_logic_vector(1 downto 0);outy: out std_logic);end singt;architecture bhv of singt iscomponent mux21aport(a,b,s: in std_logic;y:out std_logic );end component;signal tmp: std_logic;beginu1:mux21a port map(a=>a(2),b=>a(3),s=>s(0),y=>tmp);u2:mux21a port map(a=>a(1),b=>tmp,s=>s(1),y=>outy);end architecture bhv;该部分仿真结果:分析:1、3-31中电路的涵义是,s1s0为00时选择outy为a1,s1s0为01时outy为a1,s1s0为10时outy为a2,s1s0为11时outy为a3。

EDA课程设计——移位寄存器的设计与实现

EDA课程设计——移位寄存器的设计与实现

请画出下段程序的真值表,并说明该电路的功能。

河南科技大学课程设计说明书课程名称EDA技术与应用题目移位寄存器的设计与实现学院班级学生姓名指导教师日期EDA技术课程设计任务书班级:姓名:学号:设计题目:移位寄存器的设计与实现一、设计目的进一步巩固理论知识,培养所学理论知识在实际中的应用能力;掌握EDA 设计的一般方法;熟悉一种EDA软件,掌握一般EDA系统的调试方法;利用EDA软件设计一个电子技术综合问题,培养VHDL编程、书写技术报告的能力。

为以后进行工程实际问题的研究打下设计基础。

二、设计任务根据计算机组成原理中移位寄存器的相关知识,利用VHDL语言设计了三种不同的寄存器:双向移位寄存器、串入串出(SISO)移位寄存器、串入并出(SIPO)移位寄存器。

三、设计要求(1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义及现状研究分析。

(2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。

(3)学习按要求编写课程设计报告书,能正确阐述设计和实验结果。

(4)学生应抱着严谨认真的态度积极投入到课程设计过程中,认真查阅相应文献以及实现,给出个人分析、设计以及实现。

四、设计时间安排查找相关资料(1天)、设计并绘制系统原理图(2天)、编写VHDL程序(2天)、调试(2天)、编写设计报告(2天)和答辩(1天)。

五、主要参考文献[1]江国强编著.EDA技术与实用(第三版).北京:电子工业出版社,2011.[2]曹昕燕,周凤臣.EDA技术实验与课程设计.北京:清华大学出版社,2006.5[3]阎石主编.数字电子技术基础.北京:高等教育出版社,2003.[4]MarkZwolinski.DigitalSystemDesignwithVHDL.北京:电子工业出版社,2008[5]AlanB.MarcovitzIntroductiontologicDesign.北京:电子工业出版社,2003指导教师签字:年月日移位寄存器的设计与实现摘要系统使用EDA技术设计了具有移位功能的寄存器,采用硬件描述语言VHDL进行设计,然后进行编程,时序仿真等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

串行输入/并行输出的移位寄存器
//功能模块部分
module shifter_sipo(data_in,clk,clr,shift_en,data_out); //定义模块名及输入、输出变量parameter size=4; //定义size为常数4
input data_in,clk,clr,shift_en; //输入端口
output [size:1] data_out; //输出端口
reg [size:1] data_out; //输出变量为四位的寄存器型
always@(posedge clk) //always过程块[敏感事件列表(时钟上升沿有效)] if(!clr) //如果清零信号不为零
data_out='b0; //把二进制0赋给输出端口data_out
else if(shift_en) //如果shift-en不为0
begin //串行块
data_out=data_out<<1; // data_out左移一位,结果原赋给data_ou
data_out[1]=data_in; //把输入端口的值赋给输出端口的第一位
end
endmodule
//测试模块部分
module sti_shifter;//测试模块名
parameter size=8; //定义size为常数8
wire [size:1] data_out; //定义data_out为8位的连线形
reg clk,clr,data_in,shift_en; //定义clk,clr,data_in,shift_en为寄存型shifter_sipo sh1(data_in,clk,clr,shift_en,data_out); //调用功能模块
defparam sh1.size=size; //对实例sh1的size变量进行重新赋值initial begin // initial过程块
clk = 0; //把0赋给变量clk
clr = 1; //把1赋给变量clr
shift_en=1; // 把1赋给变量shift_en
data_in = 0; // 把0赋给变量data_in
#10 data_in=1; //10个时间单位后,把1赋给变量data_in
#20 data_in=0; //20个时间单位后,把0赋给变量data_in
#30 data_in=1; //30个时间单位后,把1赋给变量data_in
#40 data_in=0; //40个间单位后,把0赋给变量data_in
#50 clr=0; //50个时间单位后,把0赋给变量clr
#10 data_in=1; //10个时间单位后,把1赋给变量data_in
#20 clr=1; //20个时间单位后,把1赋给变量clr
#50 shift_en=0; // 50个时间单位后,把0赋给变量shift_en
#40 data_in=0; // 40个时间单位后,把0赋给变量data_in
#10 shift_en=1; // 10个时间单位后,把1赋给变量shift_en
#40 data_in=1; // 40个时间单位后,把1赋给变量data_in
#20 $finish; //20个时间单位后,结束仿真任务
end // initial begin
always #5 clk = ~clk; //产生时钟信号
always #10 $display ($time," clr=%b shift_en=%b data_in=%b ->data_out=%b
",clr,shift_en, data_in, data_out); //每隔10个时间单位,显示输出:当前的仿真时间,变量clr,shift_en, data_in, data_out的值(循环执行)
endmodule // stumulus
仿真波形图
总图
2.
3。

相关文档
最新文档