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

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | 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)大家看看問題出在哪了?

作者:zhx0919 欄目:嵌入式系統(tǒng)
我編些得程序,請(qǐng)大家看看問題出在哪了?
端口說明:d是并行輸入的數(shù)據(jù),要把它轉(zhuǎn)成串行輸出,cs_read是spi口的一個(gè)片選信號(hào),clk是spi的時(shí)鐘,當(dāng)cs_write有效(d的值為一計(jì)數(shù)器的輸出,當(dāng)cs_write高時(shí)計(jì)數(shù),此時(shí)d的值在不停的變化,當(dāng)cs_write為低時(shí)停止計(jì)數(shù))時(shí)把數(shù)據(jù)d存入寄存器,以便后面用來串行輸出,cs_state(也是spi口的一片選)是狀態(tài)判斷,q是串行數(shù)據(jù)輸出;


程序要實(shí)現(xiàn)的功能:其實(shí)時(shí)個(gè)并轉(zhuǎn)串的功能,當(dāng)cs_state有效時(shí),q輸出一固定值(可任意定義,如:當(dāng)計(jì)數(shù)器正在計(jì)數(shù)時(shí)輸出0xaaaa,當(dāng)計(jì)數(shù)完成時(shí)輸出0x5555),當(dāng)cs_read有效時(shí)把計(jì)數(shù)的值以串行的方式輸出;

和arm的程序連調(diào)調(diào)后的現(xiàn)象(單步執(zhí)行):當(dāng)不判斷cs_state時(shí),即不用判斷計(jì)數(shù)器是否計(jì)數(shù)完成(因?yàn)橛?jì)數(shù)器計(jì)數(shù)的時(shí)間非常短,單步執(zhí)行能夠保證其計(jì)數(shù)完成),串行輸出的數(shù)據(jù)是正確的,當(dāng)加上狀態(tài)判斷之后就不行了,請(qǐng)各位高手給看看問題出在哪了,在下在此謝謝各位高手了!

LIBRARY ieee;
USE ieee.std_logic_1164.all;


--  Entity Declaration

ENTITY series IS
    -- {{ALTERA_IO_BEGIN}} DO NOT REMOVE THIS LINE!
    PORT
    (
        
        d:in std_logic_vector(15 downto 0);
        cs_read : IN STD_LOGIC;
        clk : IN STD_LOGIC;
        cs_write : IN STD_LOGIC;
        cs1_state:in std_logic;
        q : OUT STD_LOGIC
        
    );
    -- {{ALTERA_IO_END}} DO NOT REMOVE THIS LINE!
    
END series;


--  Architecture Body

ARCHITECTURE series_architecture OF series IS
--存放計(jì)數(shù)值的寄存器;
signal reg16:std_logic_vector(15 downto 0);
--返回的狀態(tài),其數(shù)值可以自定義;
signal reg_state:std_logic_vector(15 downto 0);



BEGIN     
p3:PROCESS(clk,cs_read,cs_write,cs1_state)
     begin
       --正在計(jì)數(shù),此時(shí)d的值在不停變化;
       if(cs_write='1') then
--把d的值存入reg16;
           reg16<=d;  
           reg_state<="1010101010101010";
             
           q<='Z';
       elsif(clk'event and clk='0')  then
          if(cs1_state='0')  then  --cs1  --采集完成,可以發(fā)讀數(shù)據(jù)的指令了;
            q<=reg_state(15);
            reg_state(15 downto 1)<=reg_state(14 downto 0);
               
          elsif(cs_read='0') then  --cs6
           q<=reg16(15);
           reg16(15)<=reg16(14);
           reg16(14)<=reg16(13);
           reg16(13)<=reg16(12);
           reg16(12)<=reg16(11);
           reg16(11)<=reg16(10);
           reg16(10)<=reg16(9);
           reg16(9)<=reg16(8);
           reg16(8)<=reg16(7);
           reg16(7)<=reg16(6);
           reg16(6)<=reg16(5);
           reg16(5)<=reg16(4);
           reg16(4)<=reg16(3);
           reg16(3)<=reg16(2);
           reg16(2)<=reg16(1);
           reg16(1)<=reg16(0);
           --reg16(0)<='1';
             --q<=reg16(15);
         else
          q<='Z';
    
     end if;
    end if;

end PROCESS p3;

          
END series_architecture;


2樓: >>參與討論
alin_99
kkk
具體原因 不知道

3樓: >>參與討論
zhx0919
知道了,上面的程序是完全正確的
知道了,上面的程序是完全正確的,大家以后可以參考的,但是我剛開始不是這樣編的,不成功,請(qǐng)大家?guī)涂纯丛?
原來的程序中
if(cs1_state='0')  then  --cs1  --采集完成,可以發(fā)讀數(shù)據(jù)的指令了;
            q<=reg_state(15);
            reg_state(15 downto 1)<=reg_state(14 downto 0);
               
          elsif(cs_read='0') then  --cs6
不是這樣寫的,是這樣的:
if(cs1_state='0')  then  --cs1  --采集完成,可以發(fā)讀數(shù)據(jù)的指令了;
            q<='0';
            
               
          elsif(cs_read='0') then  --cs6


我以為spck就決定了我串行輸出的數(shù)據(jù)是16的,結(jié)果不是這樣的,就改成第一種了,成功了!!!
           
           

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
精華貼:yaffs閱讀理解
TF卡或Micro sd卡的引腳定義
一個(gè)關(guān)于Au1200的開發(fā)群里面有些有用資料,歡迎加入22431460
Cirrus功能強(qiáng)大的ARM處理器EP9302,EP9307,EP9312,EP9315
哪家的PXA270開發(fā)板參考價(jià)值比較好?
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào)