|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 matt0123 于 2010-4-12 20:49 编辑
小弟是vhdl初學者,資質拙劣還請各位海涵。
1.truncation 2.時鐘控制加法器
近期研究主題是實現全數位的MASH(多級雜訊整形),其中包含了上述兩點問題
該如何以vhdl實現是我遇到的瓶頸,還請多多指教。
1.truncation 舉例輸入一11bit信號,輸出要分作4bit MSB與7bit LSB信號
我的想法如下,殊不知出了什麼紕漏否?
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY trunc IS
PORT( input :IN STD_LOGIC_VECTOR(10 DOWNTO 0);
msb :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
lsb :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
END trunc;
ARCHITECTURE aa OF trunc IS
BEGIN
msb(3 DOWNTO 0) <= input(10 DOWNTO 7);
lsb(6 DOWNTO 0) <= input(6 DOWNTO 0);
END aa;
2.時鐘控制加法器:想要加法器在正緣觸發時才進行訊號相加的動作
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity clk_fadd is
port (X,Y,Cin,clk: in std_logic;
Cout,Sum: out std_logic);
end clk_fadd;
architecture logic of clk_fadd is
begin
Sum <= X xor Y xor Cin when clk'event and clk='1';
Cout <= (X and Y) or (X and Cin) or (Y and Cin) when clk'event and clk='1';
end logic; |
|