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 đó
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
entity 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 nhathung1101Muốn đặt gì thì cũng phải có thông tin cơ bản. Việc nhỏ thế này mà phải dấu giếm thì người lớn không thèm làm đâu.
Cho bạn 3 ngày, không là sẽ xóa.-
Channel: Đặt hàng
Hôm qua, 22:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi nhathung1101Schmit Trigger là chuẩn với điều kiện rise > 0,8V.
Bí thì dùng vi với tích gì đó, miễn đừng nói phân kẻo chó ở đây lại sủa nhặng.-
Channel: Kỹ thuật điện tử tương tự
Hôm qua, 21:57 -
-
bởi trungautMình cần đặt hàng thiết kế chế tạo mạch nghịch lưu 3 pha để cài đặt các thuật toán điều khiển động cơ FOC, DTC, ... Xin liên hệ trungaut@gmail.com để bàn chi tiết. Xin cảm ơn diễn dàn đăng tin!
-
Channel: Đặt hàng
Hôm qua, 14:27 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi tuyennhanCách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
-
Channel: Điện tử dành cho người mới bắt đầu
21-12-2024, 08:56 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
Comment