左移寄存器vhdl_基于VHDL的移位寄存器设计
摘
要
本文通過對EDA和VHDL的簡單說明,闡述了基于
VHDL硬件描述語言的移位寄存器設(shè)計方法,程序簡單,在電子
設(shè)計中有一定的推廣價值。
關(guān)鍵詞
移位寄存器???設(shè)計??EDA??VHDL
隨著科學(xué)技術(shù)的不斷進(jìn)步,尤其是計算機(jī)產(chǎn)業(yè)的日新月
異,作為計算機(jī)一個非常重要的部件——移位寄存器,從最早
只能簡單的左右移動功能的寄存器到現(xiàn)在廣泛應(yīng)用的具有寄存
代碼、實(shí)現(xiàn)數(shù)據(jù)的串行并行轉(zhuǎn)換、數(shù)據(jù)運(yùn)算和數(shù)據(jù)處理功能的
移位寄存器,它正朝著體小量輕能強(qiáng)的方向不斷發(fā)展,本文介
紹了利用生成語句設(shè)計的16位串入串出移位寄存器的方法。
1?EDA基本介紹
EDA是電子設(shè)計自動化(Electronic?Design?Automation)
的縮寫。EDA技術(shù)是指以計算機(jī)為工作平臺,融合了應(yīng)用電子技
術(shù)、計算機(jī)技術(shù)、信息處理及智能化技術(shù)的最新成果,進(jìn)行電
子產(chǎn)品的自動設(shè)計。設(shè)計者在EDA軟件平臺上,用硬件描述語
言VHDL完成設(shè)計文件,然后由計算機(jī)自動地完成邏輯編譯、化
簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目
標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出
現(xiàn),極大地提高了電路設(shè)計的效率和可操作性,減輕了設(shè)計者
的勞動強(qiáng)度。而在EDA設(shè)計中,經(jīng)常會用到移位寄存的功能,如
并行傳送的數(shù)據(jù)轉(zhuǎn)換成串行傳送的數(shù)據(jù)時的移位以及乘法器的
部分積右移等。因此,移位寄存起的設(shè)計在基于數(shù)字系統(tǒng)的設(shè)
計中顯得十分必要。
2?VHDL簡介
VHDL是工業(yè)標(biāo)準(zhǔn)的硬件描述語言,稱之為VHSIC(Very
High
Speed
Integrated
Circuit
Hardware
Description
Language),簡稱VHDL。VHDL語言主要用于描述數(shù)字系統(tǒng)的結(jié)
構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句
外,VHDL的語言形式、描述風(fēng)格以及語法是十分類似于一般的
計算機(jī)高級語言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項工程設(shè)計,或
稱設(shè)計實(shí)體(可以是一個元件,一個電路模塊或一個系統(tǒng))分
成外部(或稱可視部分及端口)和內(nèi)部(或稱不可視部分),即
涉及實(shí)體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實(shí)體定義
了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直
接調(diào)用這個實(shí)體。這種將設(shè)計實(shí)體分成內(nèi)外部分的概念是VHDL
系統(tǒng)設(shè)計的基本點(diǎn)。
3?移位寄存器
寄存器按照功能的不同分為基本寄存器和移位寄存器兩大
類。基本寄存器只能并行送入數(shù)據(jù),需要時也只能并行輸出。
移位寄存器中的數(shù)據(jù)可以在移位脈沖作用下依次逐位右移或左
移,數(shù)據(jù)既可以并行輸入、并行輸出,也可以串行輸入、串行
輸出,還可以并行輸入、串行輸出,串行輸入、并行輸出,十
分靈活,用途也很廣。
4?移位寄存器的設(shè)計過程
4.1?工作原理
如圖所示:串入串出移位寄存器有數(shù)據(jù)輸入端和同步時
鐘輸入端,一個數(shù)據(jù)輸出端。在同步時鐘的作用下,前級的數(shù)
據(jù)向后級移動。語句GENERATE用來產(chǎn)生多個相同的結(jié)構(gòu)。利用
基于VHDL的移位寄存器設(shè)計
景興紅??劉??陳??王澤芳
(重慶正大軟件職業(yè)技術(shù)學(xué)院?400056)
GENERATE和D觸發(fā)器元件dff,可以很方便地設(shè)計出16位串入串
出移位寄存器。
4.2?利用VHDL編寫程序
(1)D觸發(fā)器的程序
library?ieee;
use?ieee.std_logic_1164.all;
entity?dff_logic?is
port?(?d,?clk:?in?std_logic;
q:?out?std_logic);
end?dff_logic;
architecture?dff1?of?dff_logic?is
begin
p1:?process?(clk)
begin
if?(clk?'?event?and?clk?=?1?)?then
q?<=?d;
end?if;
end?process?p;
end?dff;
(2)頂層文件-16位移位寄存器的VHDL程序
library?ieee??;
use?ieee.std_logic_1164.all;
entity?shift_16?is
port?(a,clk:in?std_logic;
b:out?std_logic);
end?shift_16;
architecture?sample?of?shift_16?is
component?dff
port?(d,clk:in?std_logic;
q:out?std_logic);
end?component;
signal?z:std_logic_vector?(0?to?16);
begin
z(0)?<=?a;
g1:for?i?in?0?to?15?generate
dffx:dff?port?map?(z(i),clk,z(i+1));
end?generate;
b?<=?z(16);
end?sample;
參考文獻(xiàn)
[1]潘松.VHDL實(shí)用教程【M】.成都:電子科技大學(xué)出版社
.2000;[2]Jayaram.Bhaker.VHDL教程.北京:機(jī)械工業(yè)出版社
.2006.
總結(jié)
以上是生活随笔為你收集整理的左移寄存器vhdl_基于VHDL的移位寄存器设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用普通摄像头,轻松实现精准动作捕捉能力
- 下一篇: HPA的target显示unknown