最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請各位前輩幫我看看下面的程序……

作者:zhoumcu 欄目:EDA技術(shù)
請各位前輩幫我看看下面的程序……
各位前輩,幫我看看,下面的程序,我剛開始學(xué),想做個簡單的音樂程序;舅悸肥牵
clkt:是外部時鐘,4Hz,作為時間的基本時鐘,以該時鐘計數(shù)后得到一定的延時
     以決定不同的音長
clkf:是外部時鐘,3MHZ,作為音高的基本時鐘,對該時鐘經(jīng)過分頻后得到不同頻
     率。
PROCESS(clkt)是延時進程
PROCESS(clkf)是音高生成進程
PROCESS(timeok)是延時時間到進程,以改變clkf及clkt的分頻數(shù)


編譯錯誤為:
      error:LINE 20: file e:\TEMP\eda\sound_my\sound.vhd: bounds of non-constant index addressing array reaches beyond the bounds of the array


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity sound is
    PORT(
        clkt,clkf:   in    std_logic;
        spk:         out    std_logic
    );
end sound;

architecture behave of sound is
    type mnum is array (0 to 7) of integer range 0 to 255;
    signal fnum,tnum:    mnum;
     signal f,t:    integer range 0 to 8 :=0;
     signal fTEMP,tTEMP:    integer range 0 to 255 := 0;
    signal timeok : std_logic;
    begin
                    
          PROCESS(clkt)
               begin
            if rising_edge(clkt) then
                tTEMP <= tTEMP + 1;
                if (tTEMP = tnum(t)) then
                timeok <= timeok xor '1';
                tTEMP <= 0;
                end if;    
            end if;

        end PROCESS;
                
                
                
        PROCESS(clkf)
            variable spkTEMP:    std_logic;
        begin
        if rising_edge(clkf) then
            fTEMP <= fTEMP + 1;
            if fTEMP = fnum(f) then
                spkTEMP := spkTEMP xor '1';
                fTEMP <= 0;
            end if;
        end if;
        spk <= spkTEMP;
        end PROCESS;

        PROCESS(timeok)
        begin
            f <= f +1;
            t <= t +1;
            if t = 8 then t <= 0;
            end if;
            if f = 8 then f<= 0;
            end if;
        end PROCESS;


        fnum(0) <= 10#20#;
        fnum(1) <= 10#50#;
        fnum(2) <= 10#70#;        
        fnum(3) <= 10#90#;        
        fnum(4) <= 10#30#;
        fnum(5) <= 10#9#;
        fnum(6) <= 10#197#;
        fnum(7) <= 10#23#;
        tnum(0) <= 10#10#;
        tnum(1) <= 10#2#;
        tnum(2) <= 10#1#;
        tnum(3) <= 10#2#;
        tnum(4) <= 10#4#;
        tnum(5) <= 10#5#;
        tnum(6) <= 10#7#;
        tnum(7) <= 10#1#;

end behave;


2樓: >>參與討論
gao827
你的fnum,tnum是array(0 to 7),而f和t的取值范圍為0 to 8
當(dāng)f,t = 8的時候就超出范圍了

3樓: >>參與討論
zhoumcu
很感謝,不過有另外的問題了
謝謝gao827,不過,現(xiàn)在有62個錯誤,其中的一個是:
node "fnum4_1" missing source
其余61個錯誤和這個差不多。錯誤指向
singal fnum,tnum :mnum;該句。


4樓: >>參與討論
qjc.j
也幫我一下
MODULE hu (clk,data_out,control_out);
input  clk;
OUTPUT[3:0] data_out;
OUTPUT[2:0] control_out;
reg[3:0] data_out;
reg[2:0] control_out;
reg[4:0] temp_1,temp_2,temp_3,temp_4,temp_5,temp_6,temp_7,temp_8;
reg[7:0] count;
reg[19:0] count_0;
always @(posedge clk)
begin
count=count+1;
  if(count==255)
   begin
    count=0;
    control_out=control_out+1;
    if(control_out==3'b000) #10  data_out=temp_1;
    if(control_out==3'B001) #10  data_out=temp_2;
    if(control_out==3'B010) #10  data_out=temp_3;
    if(control_out==3'b011) #10  data_out=temp_4;
    if(control_out==3'B100) #10  data_out=temp_5;
    if(control_out==3'B101) #10  data_out=temp_6;
    if(control_out==3'B110) #10  data_out=temp_7;
    if(control_out==3'b111) #10  data_out=temp_8;
   end
end
endMODULE
問題是編譯一半時就不行了,
Error: Nide '76.IN2'missing soure
Error: Nide '77.IN2'missing soure
......
......
......
Error: Nide '161.IN2'missing soure
Error: Nide '162.IN2'missing soure
Error: Nide '163.IN2'missing soure
那位前輩給解釋一下.

5樓: >>參與討論
gao827
說一下qjc.j的問題
這個程序問題太多了。

首先你的Error是因為你的temp_1~8這幾個變量都是沒有賦值的,它們既不是輸入,你的程序理由從沒給他們賦值過,當(dāng)然是sourceless的。

其次你的程序用延遲#10,這是不可綜合的,如果你做testbench還可以;

然后時序邏輯沒有復(fù)位,count沒有初始值;

然后你所有的賦值都是用的阻塞賦值,這樣程序就亂套了;舉例來說:如果count=254,count=count+1這句之后count立即變成255,然后進入if塊中count又被立即賦值為0,這樣count這個信號就出來一個毛刺,而且這個邏輯肯定不是你想要得,功能完全亂了。

接下來這么多的if其實應(yīng)該用case語句來實現(xiàn)。if在綜合的時候是有優(yōu)先級的,排在前面的優(yōu)先級就高,而case沒有,所以它兩個綜合出來的邏輯是不一樣的。

總之,還是要好好看看書再動手時,可能效率會高一些。

6樓: >>參與討論
gao827
to: zhoumcu
抱歉VHDL我沒用過,沒法回答你

7樓: >>參與討論
qjc.j
多謝 gao827
我用的MAX-plus II 不支持 好多命令,我也用Quartus 4.2 編譯過,但是不知道怎樣用它下載的.請教gao827用Quartus 4.2怎樣下載程序的.

8樓: >>參與討論
84082379
給他植就可以了
 
9樓: >>參與討論
84082379
fnum tnum 有問題
 
10樓: >>參與討論
qjc.j
多謝 gao827前輩
 再問一下是 Quartus 好用還是 MAX-plus II 好用.

11樓: >>參與討論
wuzm02
誰有Quartus 4.2,能否分享一下?
誰有Quartus 4.2,能否分享一下?
   thanks all the same;

12樓: >>參與討論
gao827
to qjc.j
抱歉,ALTERA的工具我沒用過,只用過XILINXLATTICE的,你另發(fā)個帖子問問吧。

13樓: >>參與討論
qjc.j
多謝 gao827前輩
多謝您的支持.我會繼續(xù)努力的.

14樓: >>參與討論
qjc.j
wuzm02
QQ;50427587

15樓: >>參與討論
delli
gao827說的很好啊,補充一下
case也是有優(yōu)先級的,用SELECT

16樓: >>參與討論
Lyang03
請問case的優(yōu)先級別是什么樣的呀?
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
兩片7128可以實現(xiàn)菊花鏈的連接嗎?
一段出錯的程序???
請問,MAX-plusII和QuartusII4.2能不能同時用一個下載線?
EPM7128LS84的電路設(shè)計中的一些疑問
問題很垃圾,不過是菜鳥在下的疑惑哈.
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號