国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

從整數(shù)中提取個(gè)十百位的VHDL算法

2012-04-29 00:44:03唐龍
軟件工程 2012年11期
關(guān)鍵詞:效率算法

唐龍

摘要:計(jì)算機(jī)中十進(jìn)制和二進(jìn)制數(shù)據(jù)的轉(zhuǎn)換,一般是通過軟件來實(shí)現(xiàn)。但是基于馮·諾依曼結(jié)構(gòu)的計(jì)算機(jī),其指令是順序執(zhí)行的;而FPGA是并行執(zhí)行方式,適合真正意義上的并行任務(wù)處理。因此基于VHDL編程實(shí)現(xiàn)從整數(shù)中提取個(gè)十百位,其執(zhí)行速度要比采用軟件語言編程快得多。

關(guān)鍵詞:VHDL;進(jìn)制轉(zhuǎn)換;算法;效率

0.引言

歷史上第一臺(tái)電子數(shù)字計(jì)算機(jī)ENIAC是一臺(tái)十進(jìn)制機(jī)器,其數(shù)字以十進(jìn)制表示,并以十進(jìn)制形式運(yùn)算。而自然界具有兩種穩(wěn)定狀態(tài)的組件普遍存在,如開關(guān)的開和關(guān),電路的通和斷,電壓的高和低等,非常適合表示計(jì)算機(jī)中的數(shù)。因此,現(xiàn)在改為二進(jìn)制計(jì)算機(jī)。但由于二進(jìn)制數(shù)不直觀,人們在操作計(jì)算機(jī)時(shí),輸入、輸出的數(shù)據(jù)一般使用十進(jìn)制,因此需要通過軟件將十進(jìn)制轉(zhuǎn)換為二進(jìn)制。但是基于馮·諾依曼結(jié)構(gòu)的計(jì)算機(jī)在運(yùn)行程序時(shí),均為先取出指令然后執(zhí)行,并且指令是順序執(zhí)行的,其運(yùn)算效率較低;而FPGA(包括CPLD)是并行執(zhí)行方式,即當(dāng)時(shí)鐘沿到來時(shí),所有的觸發(fā)器都會(huì)動(dòng)作,其執(zhí)行效率較高。以下給出了兩種基于VHDL編程的從整數(shù)中提取個(gè)十百位的算法。

1.算法一

求余->除->再求余->再除……

例如:

…… --此處省略庫和實(shí)體描述

architecture bhv of conv is

begin process(clk,in8) --in8為輸入的8位二進(jìn)制數(shù)

variable tmp,q1,q2:integer range 0 to 255; --定義3個(gè)變量

begin tmp:=conv_integer(in8); --將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)

q1:=tmp/10; q2:=q1/10; --除以10

if clk'event and clk='1' then

out1<=conv_std_logic_vector(tmp rem 10,4); --除10取余后轉(zhuǎn)換為4位二進(jìn)制數(shù)

out2<=conv_std_logic_vector(q1 rem 10,4);

out3<=conv_std_logic_vector(q2 rem 10,4);

end if; end process; end bhv;

程序執(zhí)行后,out1,out2,out3分別是個(gè)位,十位,百位。

2.算法二

在FPGA內(nèi)部定義3個(gè)寄存器,分別表示個(gè)位、十位、百位,讓其實(shí)現(xiàn)0—999的千進(jìn)制計(jì)數(shù),當(dāng)計(jì)數(shù)值等于輸入的整數(shù)值時(shí),計(jì)數(shù)停止,然后按順序提取個(gè)十百位。

例如:

…… --此處省略庫和實(shí)體描述

architecture a of conv is

signal da,db,dc:std_logic_vector(3 downto 0);

--定義3個(gè)信號(hào),分別代表個(gè)十百位

begin process(clk,in8) --in8為輸入的8位二進(jìn)制數(shù)

variable tmp: integer range 0 to 999 :=0; --定義1個(gè)變量,初始值為0

beginif(clk'event and clk='1') then

if(tmp

if(da=9 and db=9 and dc=9) then --以下為千進(jìn)制計(jì)數(shù)

da<="0000"; db<="0000"; dc<="0000";

elsif(da=9 and db=9) then da<="0000"; db<="0000"; dc<=dc+1; tmp:=tmp+1;

elsif(da=9)then da<="0000"; db<=db+1; tmp:=tmp+1;

else da<=da+1; tmp:=tmp+1; end if;

else --當(dāng)計(jì)數(shù)值等于輸入的整數(shù)值時(shí),計(jì)數(shù)停止,然后按順序提取個(gè)十百位。

tmp:=0; da<="0000"; db<="0000"; dc<="0000";a0<=da; a1<=db; a2<=dc;

end if; end if; end process; end a;

程序執(zhí)行后,a0,a1,a2分別是個(gè)位,十位,百位。

3.結(jié)束語

在數(shù)據(jù)處理中經(jīng)常會(huì)遇到二進(jìn)制與十進(jìn)制的轉(zhuǎn)換,但由于MCU、CPU、DSP等的內(nèi)部結(jié)構(gòu)都是設(shè)計(jì)好的,所以只能通過軟件編程來進(jìn)行順序處理,速度相對較慢,F(xiàn)PGA則可以并行處理,完全可以將一個(gè)二進(jìn)制數(shù)據(jù)作為輸入,然后直接在內(nèi)存中輸出對應(yīng)的ASCII碼,這個(gè)速度是非常快的,只受限于內(nèi)存讀取速度。

參考文獻(xiàn)

[1] 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程—VHDL版[M].北京:科學(xué)出版社,2010.

[2] 何小海,嚴(yán)華.微機(jī)原理與接口技術(shù)[M].北京:科學(xué)出版社,2006.

猜你喜歡
效率算法
提升朗讀教學(xué)效率的幾點(diǎn)思考
甘肅教育(2020年14期)2020-09-11 07:57:42
注意實(shí)驗(yàn)拓展,提高復(fù)習(xí)效率
基于MapReduce的改進(jìn)Eclat算法
Travellng thg World Full—time for Rree
進(jìn)位加法的兩種算法
算法初步兩點(diǎn)追蹤
效率的價(jià)值
商周刊(2017年9期)2017-08-22 02:57:49
基于增強(qiáng)隨機(jī)搜索的OECI-ELM算法
一種改進(jìn)的整周模糊度去相關(guān)算法
跟蹤導(dǎo)練(一)2
三穗县| 宁都县| 海南省| 望城县| 南阳市| 轮台县| 荣成市| 财经| 南平市| 延安市| 泾川县| 多伦县| 鄱阳县| 利辛县| 湖北省| 永城市| 惠安县| 土默特左旗| 义马市| 天台县| 和政县| 思茅市| 宁津县| 天峻县| 婺源县| 山西省| 株洲市| 客服| 遵义市| 霍州市| 雷州市| 横山县| 阿城市| 台山市| 九龙县| 永仁县| 华亭县| 松潘县| 柘城县| 桦川县| 板桥市|