- 积分
- 478
- 在线时间
- 1483 小时
- 最后登录
- 2019-12-16
- 阅读权限
- 50
- 精华
- 0

- UID
- 5498
- 帖子
- 361
- 精华
- 0
- 经验
- 478 点
- 金钱
- 358 ¥
- 注册时间
- 2005-9-8
|
首先说明 这个和ess9018 没有任何关系, 只是代号巧合而已, 不过最近9018 太火了, 希望也能占点仙气。
先列下这个东东的几个特点。
1。 用无线路由器 + enc424j600 + pic 的无线接受方式, 自认为是目前业余条件下, 最容易实现, 成本最低的的架构。
2。 理论上支持任何设备, PC 用foobar2000 + 自己开发的 ASIO 驱动, 可以播放多种音频格式, android 用一个简单的wav 读取程序。
3。 接收板和DAC 板独立设计, 接收板采用tcp 协议, 2级缓存, 确保数据的准确和流畅,
4。 I2S 信号由CPLD产生, 能更好的保证 BCK LRCK 信号的质量,
5。 差分时钟震荡电路, 独立供电, 比较器输出。 采用这种形势, 主要是在低成本下, 能得到一个好的时钟信号。
6。 DAC芯片采用 pcm1792, 由于pcm1792的争议比较大, 我采用 NOS 的工作方式 bypass 内部滤波器。 用电阻作I/V 转换。 1792 的最大模拟电压是6.5v
和老外学的 , 让他工作在8v, 这样才能有较好的电压输出。 为了不浪费 板上的软控 MCU, 我还加了个小的 TF 卡座, 也就是在不联网的情况下, 播放里面的 wav 文件。
欢迎专家指正。 焊接水平太差 不好意思。
VHDL 源代码 请勿商用
--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 17:22:29 08/06/13
-- Design Name:
-- Module Name: LedOn - Behavioral
-- Project Name:
-- Target Device:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity IIS is
Port ( LED, MCUCLK, SCK, BCK, LRCK, SDL, SDR, MOSI, SCLK : out std_logic;
CLK,MISO : in std_logic
);
end IIS;
architecture Behavioral of IIS is
--constant max_count : natural := 11289600;
SIGNAL Shift_Reg : STD_LOGIC_VECTOR(15 downto 0);
SIGNAL Shift_RReg : STD_LOGIC_VECTOR(15 downto 0);
SIGNAL WSt,WS : STD_LOGIC := '0' ;
SIGNAL CLKt : STD_LOGIC := '0' ;
SIGNAL CLK_Div : STD_LOGIC_VECTOR(1 downto 0);
SIGNAL WS_count : NATURAL RANGE 0 TO 63 := 63;
SIGNAL WS_c : NATURAL RANGE 0 TO 15 := 15;
begin
Shift_IIS: PROCESS(CLKt,WSt)
BEGIN
IF (rising_edge(CLKt)) THEN
IF WSt='1' THEN
Shift_Reg(0) <= MISO;
Shift_Reg(15 downto 1) <= Shift_Reg(14 downto 0);
ELSE
Shift_RReg(0) <= MISO;
Shift_RReg(15 downto 1) <= Shift_RReg(14 downto 0);
END IF ;
END IF;
END PROCESS;
CLK_Div_4: PROCESS(CLK)
BEGIN
IF (rising_edge(CLK)) THEN
CLK_Div <= CLK_Div+ 1 ;
END IF ;
END PROCESS ;
CLK_div_32: PROCESS(CLKt)
BEGIN
IF ( rising_edge(CLKt) ) THEN
WS_count <= (WS_count + 1) MOD 64 ;
WS_c <= (WS_c + 1) MOD 16 ;
END IF;
END PROCESS ;
WS_gen: PROCESS(WS_count)
BEGIN
IF ( (WS_count >= 0) AND (WS_count <= 31) ) THEN
WSt <= '0' ;
ELSE
WSt <= '1' ;
END IF ;
END PROCESS ;
WS_genE: PROCESS(WS_c)
BEGIN
IF ( (WS_c >= 0) AND (WS_c <= 7) ) THEN
WS <= '0' ;
ELSE
WS <= '1' ;
END IF ;
END PROCESS ;
MCUCLK <= CLK;
SCK <= CLK;
CLKt <= CLK_Div(1);
BCK <= CLKt;
SCLK <= CLKt;
LRCK <= WS;
MOSI <= WSt;
SDL <= Shift_Reg(15) WHEN WSt = '1' ELSE '0';
SDR <= Shift_RReg(15) WHEN WSt = '0' ELSE '0';
LED <= '1';
end Behavioral;
ASIO 代码 请勿商用
ASIO TCP DRIVER.zip
(5.49 KB, 下载次数: 252)
|
评分
-
查看全部评分
|