|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請(qǐng)教VHDL的一個(gè)問(wèn)題. |
| 作者:tangbinym 欄目:EDA技術(shù) |
我想用VHDL實(shí)現(xiàn)一個(gè)這樣的電路,功能如下: 輸入為一個(gè)時(shí)鐘信號(hào).輸出為8位數(shù)據(jù).當(dāng)輸出為1(0000 0001)時(shí)輸入時(shí)鐘產(chǎn)生1個(gè)下降沿.當(dāng)輸出為2(0000 0010)時(shí)輸入時(shí)鐘產(chǎn)生2個(gè)下降沿.當(dāng)輸出為3(0000 0011)時(shí)輸入時(shí)鐘產(chǎn)生3個(gè)下降沿.當(dāng)輸出為4(0000 0100)時(shí)輸入時(shí)鐘產(chǎn)生4個(gè)下降沿.以此類推.請(qǐng)問(wèn)用VHDL如何實(shí)現(xiàn). |
| 2樓: | >>參與討論 |
| 作者: xhjiang 于 2005/3/12 15:47:00 發(fā)布:
試試這個(gè),我調(diào)試過(guò)了 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt is PORT(clk,clr:in std_logic; lode: in std_logic; din: in std_logic_vector(7 downto 0); d:out std_logic_vector(7 downto 0)); end; architecture rtl of cnt is signal s : std_logic_vector(7 downto 0); begin PROCESS(clk,clr,lode,din) begin if clr='1' then s<="00000000"; elsif lode<='1' then s<=din; elsif falling_edge(clk) then s<=s+1; end if; end PROCESS; d<=s; end rtl; |
|
| 3樓: | >>參與討論 |
| 作者: wuyibang 于 2005/3/12 20:34:00 發(fā)布:
好像沒(méi)有錯(cuò) |
|
| 4樓: | >>參與討論 |
| 作者: tangbinym 于 2005/3/13 19:44:00 發(fā)布:
re xhjiang 大哥.我再說(shuō)明一下功能要求.它不是一個(gè)上升沿計(jì)數(shù)一次就改變輸出.它是輸出的數(shù)值是多少.它的CLK上升沿就會(huì)產(chǎn)生多少個(gè).它的功能如下:假設(shè)CLK從0開(kāi)始計(jì)數(shù).產(chǎn)生第一個(gè)上升沿時(shí)輸出為1.然后產(chǎn)生一個(gè)上升沿(也就是第二個(gè))輸出為2.產(chǎn)生第三個(gè)上升沿也輸出為2.產(chǎn)生第四個(gè).第五個(gè).第六個(gè)上升沿時(shí)輸出為3.產(chǎn)生第七.第八.第九.第十個(gè)時(shí)輸出為4.以此類推.輸出數(shù)值:保持輸出的CLK上升沿個(gè)數(shù)=N:N; |
|
| 5樓: | >>參與討論 |
| 作者: xhjiang 于 2005/3/17 21:17:00 發(fā)布:
不好意思,上次理解錯(cuò)誤。再看看這個(gè)吧 下邊的程序 雖然能仿真結(jié)果,但是我覺(jué)得太麻煩一點(diǎn)。不知道 你們有沒(méi)有更好的構(gòu)思 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt_wav is PORT(clk,set:in std_logic; dout:out std_logic_vector(7 downto 0)); end; architecture rtl of cnt_wav is signal s1,s2,ns1,ns2:std_logic_vector(7 downto 0); signal lode,f,en:std_logic; begin en<=f; lode<=f or set; dout<=s1; up1:PROCESS(s1) begin if s1="11111111" then ns1<="00000001"; else ns1<=s1+1; end if; end PROCESS; up2:PROCESS(clk,en,set) begin if falling_edge(clk) then if set='1' then s1<="00000001"; elsif en='1' then s1<=ns1; end if; end if; end PROCESS; down1:PROCESS(s2) begin if s2="00000001" then f<='1'; else f<='0'; end if; ns2<=s2-1; end PROCESS; down2:PROCESS(clk,lode) begin if rising_edge(clk) then if lode='1' then s2<=s1; else s2<=ns2; end if; end if; end PROCESS; end rtl; |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |