oke. Em đã hiểu. Cám ơn anh rất nhiều
Thông báo
Collapse
No announcement yet.
lập trình SPWM cho động cơ AC bằng VHDL
Collapse
X
-
Anh Tony ơi cho em hỏi anh 1 việc này nữa ạ.
Ở trong cái chương trình điều xung PWM của anh viết hướng dẫn đó
bây giờ em muốn chuyển sang dung lên tới 16 bit, trong đó 2 bit đầu là mức 1, 2 bit sau nữa 11, 2 bit sau nữa là 111... đến bít 15,16 là 1111111111111111 ,sau đó giảm ngược lại, Thì em phải làm thế nào hả anh. Em làm mãi mà không đựoc.library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity SPWM is
generic ( Cmax : integer :=8);
port (
clk : in std_logic;
reset : in std_logic;
enable : in std_logic;
PWM : out std_logic);
end SPWM;
architecture Behavioral of SPWM is
signal cclk : integer range 0 to Cmax;
signal threshold : integer range 0 to Cmax;
signal up : std_logic;
begin
process (clk, reset)
begin
if (reset = '1') then
PWM <= '0';
cclk <= 0;
threshold <= 0;
up <= '1';
elsif (clk'event and clk ='1') then
if (enable = '1') then
if (cclk <= threshold) then
PWM <= '1';
else
PWM <= '0';
end if;
if (cclk = Cmax-1) then
cclk <= 0;
else
cclk <= cclk + 1;
end if;
if (cclk = Cmax-1) then
if (threshold = Cmax-3) then
up <= '0';
end if;
if (threshold = 1) then
up <= '1';
end if;
if (up = '1') then
threshold <= threshold + 1;
else
threshold <= threshold - 1;
end if;
end if; --
end if; --enable
end if;
end process;
end Behavioral;
Mong anh giúp đỡ em.
Cám ơn anh!
Comment
-
anh Tony ơi cho em hỏi em đã sửa lại rồi mà sao 2 xung kế tiếp nhau lại không bằng nhau
đây là code của em
Mong anh giúp đỡ, em sắp nộp rồi mà vẫn chưa điều chế được anh akentity SPWM1 is
generic ( Cmax : integer :=8);
port (
clk : in std_logic;
reset : in std_logic;
enable : in std_logic;
PWM : out std_logic
);
end SPWM1;
architecture Behavioral of SPWM1 is
signal cclk : integer range 0 to Cmax;
signal threshold1 : integer range 0 to Cmax ;
signal up : std_logic;
signal tmp : std_logic;
begin
process (clk, reset,enable)
variable threshold : integer range 0 to Cmax;
begin
if ((reset = '1')or(enable = '0')) then
PWM <= '0';
cclk <= 0;
threshold1 <= 0;
up <= '1';
elsif (clk'event and clk ='1') then
if (cclk <= threshold1) then
tmp <='1';
PWM <= tmp;
else
tmp <='0';
PWM <= tmp;
end if;
if (cclk = Cmax) then
cclk <= 0;
else
cclk <= cclk + 1;
end if;
if (cclk = Cmax-1) then
if (threshold1 = Cmax-2) then
up <= '0';
end if;
if (threshold1 = 0) then
up <= '1';
end if;
if (up = '1') then
if (cclk =0) then
threshold := threshold ;
elsif (cclk = 1) then
threshold := threshold +1;
elsif (cclk = 2) then
threshold := threshold ;
elsif (cclk = 3) then
threshold := threshold +1;
elsif (cclk = 4) then
threshold := threshold ;
elsif (cclk = 5) then
threshold := threshold +1;
elsif (cclk = 6) then
threshold := threshold ;
elsif (cclk = 7) then
threshold := threshold +1;
end if;
else
if (cclk =0) then
threshold := threshold ;
elsif (cclk =1) then
threshold := threshold -1;
elsif (cclk =2) then
threshold := threshold ;
elsif (cclk =3) then
threshold := threshold -1;
elsif (cclk =4) then
threshold := threshold ;
elsif (cclk =5) then
threshold := threshold -1;
elsif (cclk =6) then
threshold := threshold ;
elsif (cclk =7) then
threshold := threshold -1;
end if;
end if;
threshold1 <= threshold ;
end if;
end if;
end process;
end Behavioral;
Cám ơn anh!Last edited by FPGA_9572XL; 12-06-2011, 21:23.
Comment
-
Tôi đổi lại code đã gửi trước đây, bạn thử lại xem.
Code:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity SPWM is generic ( Cmax : integer :=16); port ( clk : in std_logic; reset : in std_logic; enable : in std_logic; PWM : out std_logic); end SPWM; architecture Behavioral of SPWM is signal cclk : integer range 0 to Cmax; signal threshold : integer range 0 to Cmax; signal up, threshold_change : std_logic; begin process (clk, reset) begin if (reset = '1') then PWM <= '0'; cclk <= 0; threshold <= 0; up <= '1'; threshold_change <= '0'; elsif (clk'event and clk ='1') then if (enable = '1') then if (cclk <= threshold) then PWM <= '1'; else PWM <= '0'; end if; if (cclk = Cmax-1) then cclk <= 0; else cclk <= cclk + 1; end if; if (cclk = Cmax-1) then if (threshold_change = '1') then if (threshold = Cmax-2) then up <= '0'; end if; if (threshold = 1) then up <= '1'; end if; if (up = '1') then threshold <= threshold + 1; else threshold <= threshold - 1; end if; end if; threshold_change <= not threshold_change; end if; -- end if; --enable end if; end process; end Behavioral;
Comment
Bài viết mới nhất
Collapse
-
bởi theidiotcatTrong thời buổi vật giá leo thang, việc sắm một bộ máy tính chơi game đáp ứng đủ tiêu chí "ngon, bổ, rẻ" là ưu tiên hàng đầu của nhiều bạn trẻ. Lúc này, combo sử dụng vi xử lý AMD Ryzen 5 7500F kết hợp cùng card màn hình Radeon...
-
Channel: Đánh giá sản phẩm DTVN
hôm nay, 10:16 -
-
bởi theidiotcatAMD Ryzen 9 9950X3D không chỉ là một bộ vi xử lý đơn thuần; nó là lời khẳng định về sức mạnh của kiến trúc Zen 5 kết hợp cùng công nghệ 3D V-Cache đột phá. Trong bối cảnh thị trường linh kiện PC cạnh tranh khốc liệt, đây được xem...
-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 09:21 -
-
bởi theidiotcatBộ đôi Ryzen 9 9950X3D2 và Radeon RX 9070 XT 16GB là sự kết hợp phần cứng cao cấp nhất của AMD hiện nay. Đây không chỉ là một dàn máy tính để giải trí thông thường, mà là công cụ làm việc mạnh mẽ dành cho những ai có nhu cầu xử lý cường...
-
Channel: Đánh giá sản phẩm DTVN
Hôm qua, 09:09 -
-
bởi theidiotcatKhi ráp một bộ máy tính cấu hình cao, việc cân đối ngân sách cho từng linh kiện là rất quan trọng. Sự kết hợp giữa vi xử lý AMD Ryzen thế hệ mới có công nghệ 3D V-Cache và card đồ họa Radeon RX 9070 XT đang là lựa chọn rất đáng tiền....
-
Channel: Đánh giá sản phẩm DTVN
11-06-2026, 10:43 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Giới thiệu bản nhạc đệm mới nhộn nhịp tươi vui, nghe là muốn... xuất gia đi tu liền!!!!😁...
-
Channel: Tâm tình dân kỹ thuật
11-06-2026, 09:51 -
-
Trả lời cho Máy đo khuôn mẫubởi vi van phamQuá dễ, Mua cái máy xq quét tòan thân, lấy bàn và khung di chuyển. Tháo đầu xquang ra bán ve chai, mua cái máy siêu âm gắn vào vị trí đầu đèn. Setup máy là chạy chính xác, còn file Setup thì chưa nghĩ ra....
-
Channel: Đo lường và điều khiển dùng máy tính
07-06-2026, 08:49 -
-
Trả lời cho Máy Phun sương tạo ầm Trung Quốc.bởi nguyendinhvanMạch tạo sương là tự dao động.
Mach 555 là đóng mở chu kỳ tần số thấp.
IC 555 giá rẻ, chỉ chạy lên tần số vài trăm ki lô hẹc thôi. Thăng cao hơn là méo dạng rồi tịt.
Mach sương thì dao động tần số tầm 2 mê ga hẹc cơ !...-
Channel: Tâm tình dân kỹ thuật
07-06-2026, 00:09 -
-
bởi nguyendinhvan
Cái máy đo này mắc tiền quá !
Anh em dtvn có giải pháp nào tự chế được không ?...-
Channel: Đo lường và điều khiển dùng máy tính
07-06-2026, 00:00 -
-
bởi nguyendinhvanOi giời.
Thơi buổi PLC rồi, cậu còn hỏi mấy thứ cổ lỗ sĩ này nữa.-
Channel: Tâm tình dân kỹ thuật
06-06-2026, 22:59 -
-
bởi nguyendinhvanChuyện này cũ rồi.
Họ trả lương cho CN, sau đó lại bán hàng thu tiền về. Họ còn cấp các dịch vụ như chỗ ăn ở, quán cafe , giải trí, phương tiện giao thông. Mục đích là thu tối đa số tiền đã chi trả.
Hàng hóa sx ra, chuyển...-
Channel: Tìm mua
06-06-2026, 22:56 -


Comment