论坛风格切换切换到宽版
  • 5530阅读
  • 30回复

开始玩AD9858,板子回来好长时间终于可以发图了 [复制链接]

上一主题 下一主题
离线yuhang
 
发帖
1803
只看楼主 倒序阅读 0楼 发表于: 2008-10-07
单片机不熟悉用cpld驱动的

写了一个状态机,感觉写的不好,晚上再改改

下面是输出250m时候的频谱

1g时钟是有信号源提供的

板子上画了adf4360打算用这个给9858弄一个时钟
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BG7YDO
发帖
3654
只看该作者 1楼 发表于: 2008-10-07
漂亮,。。。
离线代洪波
发帖
4809
只看该作者 2楼 发表于: 2008-10-07
线圈为什么不用印刷电感?
离线yuhang
发帖
1803
只看该作者 3楼 发表于: 2008-10-07
这个是电路图
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线yuhang
发帖
1803
只看该作者 4楼 发表于: 2008-10-07
[quote=代洪波]线圈为什么不用印刷电感?[/quote]

印刷电感体积有点大,另外不太好计算,要是想改参数就没法改了
离线BD5UYW
发帖
4657
只看该作者 5楼 发表于: 2008-10-07
好板,做信号源。
离线bellstudio
发帖
2820
只看该作者 6楼 发表于: 2008-10-07
哈哈哈
弄得跟adi的官方开发板似的,还有logo和编号
离线HK大飛
发帖
336
只看该作者 7楼 发表于: 2008-10-07
'
哈哈哈
弄得跟adi的官方开发板似的,还有logo和编号
'

你不說我還真的以為是官方板。

又買到假貨了。
离线汤圆
发帖
1157
只看该作者 8楼 发表于: 2008-10-07
唉 放毒吧 啊 你 小心抢来
离线xiaomu
发帖
178
只看该作者 9楼 发表于: 2008-10-07
电源:5v 不到0.5a不错的说!
电感圈圈排队队

good!
我小mu<- yuhang 一定熟悉
'
单片机不熟悉用cpld驱动的
写了一个状态机,感觉写的不好,晚上再改改
下面是输出250m时候的频谱
1g时钟是有信号源提供的
板子上画了adf4360打算用这个给9858弄一个时钟
'
离线BG7TBL
发帖
2965
只看该作者 10楼 发表于: 2008-10-07
我也以为是官方版呢!
离线bg6abi
发帖
93
只看该作者 11楼 发表于: 2008-10-08


板子很漂亮啊,正准备画一块通用板呢。
离线yuhang
发帖
1803
只看该作者 12楼 发表于: 2008-10-08
测试程序

library ieee;
use ieee.std_logic_1164.all;

---------------------------------------------------------------

entity state_9858 is
port(
     clk                  :in std_logic;
     reset            :in std_logic;
     rst                  :out std_logic;
     spselect      :out std_logic;
     nwr                  :out std_logic;
     nrd                  :out std_logic;
     data_out      :out std_logic_vector(7 downto 0);
     add_out            :out std_logic_vector(5 downto 0);
     fud                  :out std_logic
     );
end state_9858;

---------------------------------------------------------------

architecture behavier of state_9858 is
type state_type is(      s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,
                             s11,s12,s13,s14,s15,s16,s17,s18
                             );
signal      presentstate      :state_type;
signal      nextstate            :state_type;
signal      data                  :std_logic_vector(7 downto 0);
signal      add                        :std_logic_vector(5 downto 0);


---------------------------------------------------------------

begin

spselect<=Ƈ'
nrd<=Ƈ'

---------------------------------------------------------------

update:
process(reset,clk)
begin
if(reset=Ƈ') then
     presentstate<=s0;
     elsif (clk'event and clk=Ɔ') then
           presentstate<=nextstate;
end if;
end process update;

---------------------------------------------------------------

changestate:
process(presentstate)

begin

if presentstate=s0 then
     rst<=Ƈ'
     fud<=Ɔ'
     nwr<=Ƈ'
     nextstate<=s1;
---------------------------------------------------------------
     elsif presentstate=s1 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="000000";
           data<="01101000";
           nextstate<=s2;
     elsif presentstate=s2 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="000000";
           data<="01101000";
           nextstate<=s3;
     elsif presentstate=s3 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="000001";
           data<="01000000";
           nextstate<=s4;
     elsif presentstate=s4 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="000001";
           data<="01000000";
           nextstate<=s5;
     elsif presentstate=s5 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="000010";
           data<="10000001";
           nextstate<=s6;
     elsif presentstate=s6 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="000010";
           data<="10000001";
           nextstate<=s7;
     elsif presentstate=s7 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="000011";
           data<="00000000";
           nextstate<=s8;
     elsif presentstate=s8 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="000011";
           data<="00000000";
           nextstate<=s9;
     elsif presentstate=s6 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="000010";
           data<="10000001";
           nextstate<=s7;
     elsif presentstate=s7 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="000011";
           data<="00000000";
           nextstate<=s8;
     elsif presentstate=s8 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="000011";
           data<="00000000";
           nextstate<=s9;
---------------------------------------------------------------
     elsif presentstate=s9 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="001010";
           data<="10011010";
           nextstate<=s10;
     elsif presentstate=s10 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="001010";
           data<="10011010";
           nextstate<=s11;
     elsif presentstate=s11 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="001011";
           data<="10011001";
           nextstate<=s12;
     elsif presentstate=s12 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="001011";
           data<="10011001";
           nextstate<=s13;
     elsif presentstate=s13 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="001100";
           data<="10011001";
           nextstate<=s14;
     elsif presentstate=s14 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="001100";
           data<="10011001";
           nextstate<=s15;
     elsif presentstate=s15 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           add<="001101";
           data<="01111111";
           nextstate<=s16;
     elsif presentstate=s16 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ɔ'
           add<="001101";
           data<="01111111";
           nextstate<=s17;
     elsif presentstate=s17 then
           rst<=Ɔ'
           fud<=Ƈ'
           nwr<=Ƈ'
           nextstate<=s18;
     elsif presentstate=s18 then
           rst<=Ɔ'
           fud<=Ɔ'
           nwr<=Ƈ'
           nextstate<=s18;
     else
           null;
end if;
end process changestate;

add_out<=add;
data_out<=data;

end behavier;
离线jiajia1201
发帖
254
只看该作者 13楼 发表于: 2008-10-08
我以前写的,参考一下。
begin
process(en,clk_cor,runmode,fpoint,setmode)--dds输出
--variable regadd:     std_logic_vector(3 downto 0);
--variable count:     std_logic_vector(7 downto 0);
--variable data32_f :   std_logic_vector(31 downto 0);--"11111111111111111111111111111111"
--variable data32_step : std_logic_vector(31 downto 0);
begin
  if clk_cor'event and clk_cor=Ƈ'then
    regadd<=regadd+1;
    if regadd=9 then regadd<=0;end if;
    setadd<=setadd+1;
    if setadd=300 then setadd<=0;end if;

  if en=Ɔ' and runmode=Ƈ' and setmode=Ɔ' then--set mode
    case setadd is
        when 0=>   rest<=Ƈ'ps0<=Ɔ'ps1<=Ɔ'pselect<=Ƈ'setok<=Ɔ'
        when 50=> rest<=Ɔ'wr<=Ƈ'
        when 51=> add<="000000";-- 1/2 fre
        when 52=> wr<=Ɔ'
        when 53=> data<="01011000";
        when 54=> wr<=Ƈ'
        when 55=> add<="000001";-- cosin out
        when 56=> wr<=Ɔ'
        when 57=> data<="01000000";
        when 58=> wr<=Ƈ'
        when 59=> setok<=Ƈ'
      when others=> null;
    end case;
  end if;  

  if en=Ɔ' and runmode=Ɔ' and setmode=Ƈ' then --run mode
    case regadd is
          when 0=>   wr<=Ƈ'add<="001010";data<=data32_f(7 downto 0);----写地址   7..0 0x0a
          when 1=>   wr<=Ɔ'
                   
          when 2=>   wr<=Ƈ'add<="001011";data<=data32_f(15 downto 8);
          when 3=>   wr<=Ɔ'
           
          when 4=>   wr<=Ƈ'add<="001100";data<=data32_f(23 downto 16);----写地址   23..16 0x0c
          when 5=>   wr<=Ɔ'

          when 6=>   wr<=Ƈ'add<="001101";data<=data32_f(31 downto 24); ----写地址   31..24 0x0d                  
          when 7=>   wr<=Ɔ'fud<=Ƈ'
          --when 8=>  
          when 8=>   fud<=Ɔ'
                  count<=count+1; if count=38 then count<=0;end if;
                  case count is--0~21--"00000000000100000110001001001110"
                  --when 0=>   data32_f<="00101100101000001000010011011000";--129mhz
                  --when 21=>   data32_f<="01000011011101011001111100100010";--195mhz--
                  when 0=>     data32_f<="00101100111001110101111001100000";--129.8mhz

                  when 1=>     data32_f<="00101111000000111001100100001100";--135.9mhzaaaaaaaaaaaaaaa
                  when 2=>     data32_f<="00101111000011000111010000111101";--136mhz
                  when 3=>     data32_f<="00101111000101010100111101101110";--136.1mhz
                  when 4=>     data32_f<="00101111000111100010101010011111";--136.2mhz
                  when 5=>     data32_f<="00101111001001110000010111010000";--136.3mhz
                  when 6=>     data32_f<="00101111111000010000000011010100";--138.4mhz
                  when 7=>     data32_f<="00101111111010011101110000000101";--138.5mhz
                  when 8=>     data32_f<="00101111111100101011011100110110";--138.6mhz
                  when 9=>     data32_f<="00101111111110111001001001100111";--138.7mhz
                  when 10=>   data32_f<="00110000000001000110110110011000";--138.8mhz

                  when 11=>     data32_f<="00110001001101011111011110110010";--142.25mhzbbbbbbbbbbbbbbb
                  when 12=>     data32_f<="00110001011110000110001110100010";--143mhz
                  when 13=>     data32_f<="00110001111111010011101110000001";--144.5mhz
                  when 14=>     data32_f<="00110010001010011000001101110101";--145mhz
                  when 15=>     data32_f<="00110010110001000111111101001111";--146.75mhz
                                                               
                  when 16=>     data32_f<="00110100001000100101000101011110";--150.7mhz  
                  when 17=>     data32_f<="00110100110000011011101011001111";--152.5mhz  
                           
                  when 18=>     data32_f<="01000011011101011001111100100010";--195mhz--
                 
                  when others=> data32_f<=data32_f+"00000000011011101011001111100100";--1.25mhz
                  --when others=> null;       "01000011011101011001111100100010";
                  end case;
          when others=>   null;              
          end case;
  end if;
else
  null;
end if;                
end process;
end ctrl_architecture;
保证可以用,我以前以产品上的部分程序
离线yuhang
发帖
1803
只看该作者 14楼 发表于: 2008-10-08
太感谢楼上了,有个参考就好写了
离线yuhang
发帖
1803
只看该作者 15楼 发表于: 2008-10-08
'
begin
[表情]保证可以用,我以前以产品上的部分程序
'


貌似一个屏蔽器,不知道屏蔽这些频率干什么?
离线jiajia1201
发帖
254
只看该作者 16楼 发表于: 2008-10-08
信号源!某种程度上也是干扰源
离线Receiver
发帖
136
只看该作者 17楼 发表于: 2008-10-08
板子相当漂亮,走线也很工整
做得很细致,顶一下
另外yuhang兄能否把频谱仪的span设大一些,想看看杂散和谐波如何
离线BD7YA
发帖
2392
只看该作者 18楼 发表于: 2008-10-08
好漂亮的板,楼主使用什么软件出的pcb?
离线yuhang
发帖
1803
只看该作者 19楼 发表于: 2008-10-08
'
好漂亮的板,楼主使用什么软件出的pcb?
'

protel99画的

用了好久,不舍的换