Phân tích băm xung nào !!

1,248 views
Skip to first unread message

Admin[machdientu.net]

unread,
Jun 7, 2011, 5:37:18 AM6/7/11
to dhd...@googlegroups.com
Chúng ta cùng phân tích khái niệm băm xung nha.Băm xung hay nói cách khác là thay đổi độ rộng của xung . Độ rộng của xung thay đổi nhờ tỷ lệ xung mức 1 và mức 0 .
Theo như đề 11 độ rộng xung là 70% mức 1 30% mức 0 , tần số 5kHz
mình thắc mắc một điều  là tần số này có phải tạo như VDK  k ? hay dùng trong mo phỏng ???
BÀi của Du mình cũng đã xem qua , nếu như dùng tần số chuẩn 5KhZ  thì dùng 10 xung như Du là k ổn , ở đây ta phải dùng 3500 xung ở mức 1 sau đó 1500 xung ở mức 0 .
Nếu k như vậy thì cái tần số 5KhZ với 1 KHZ k còn ý nghĩa gì nữa .
mà câu lệnh của Du cũng có vấn đề :
Xem lại chỗ này DU nha !
wait until(clk'event and clk='1');
        case dem is
            when 3 =>q<='0';
            when 10 =>q<='1';
            when others=>NULL;
        end case;
        if(dem=10) then
            dem:=1;
        else dem:=dem+1;
        end if;

Hi vọng mọi người có hướng giải nào thì góp ý nha !

Admin[machdientu.net]

unread,
Jun 7, 2011, 5:49:04 AM6/7/11
to dhd...@googlegroups.com
LẠi nhầm nhọt chút rồi  5KHZ là tần số  1 xung  k phải 5000xung. vì thế ở đây là 70% của xung là mức 1 30% là mức 0 . Đọc sách VDK trag 114 . Ka này khó đẻ đây !!!!

Còn một cách khách dùng đếm xung dc là ta dùng 1 xung có tần số nhỏ bằng 1Hz đếm đủ 5000 xung này dc xung 5KhZ => cách này làm dễ dàng hơn như cách n\mình nói ở trên . K biết làm thế dc k mọi người cho ý kiến cái

du nguyen

unread,
Jun 7, 2011, 5:49:20 AM6/7/11
to dhd...@googlegroups.com
1.thực chất bài này là chia tần,mình làm với hệ số chia bằng 10.<0->9 or 1->10,tần số xung CLK minh lấy là 50K/10=5K>
2.TKHTS<VHDL> hoàn toàn khác VĐK<đơn giản hơn VĐK>

Vào 16:37 Ngày 07 tháng 6 năm 2011, Admin[machdientu.net] <ad...@machdientu.net> đã viết:

Admin[machdientu.net]

unread,
Jun 7, 2011, 5:53:09 AM6/7/11
to dhd...@googlegroups.com
Cách thực hiện thì mình k nói , nhưng nguyên tắc băm xung thì k đổi , Một điều chú ý nữa là chia tần khác băm xung . vẫn là 50/50. tần số k đổi , trong khi băm xung tần số cố định

du nguyen

unread,
Jun 7, 2011, 6:00:28 AM6/7/11
to dhd...@googlegroups.com
1.mình không có ý kiến gì thêm,<đọc bộ phát tín hiệu trang 131 GT VHDL,theo ý kiến chủ quan của mình họ cũng dùng chia tần ở đây>
2.nhưng mình đề nghị đọc kĩ hướng dẫn sử dụng trước khi dùng!hihi

Vào 16:53 Ngày 07 tháng 6 năm 2011, Admin[machdientu.net] <ad...@machdientu.net> đã viết:

Admin[machdientu.net]

unread,
Jun 7, 2011, 6:34:20 AM6/7/11
to dhd...@googlegroups.com
entity PWM1 is
 generic (pwm_max : integer := 12;
          pwm_hi : integer := 8;
          pwm_lo : integer := 10);
 port (
 clk_in,reset,ena:in std_logic ;
 PWM_out: out std_logic
 );
 end PWM1;
 
architecture Behavioral of PWM1 is 
begin
 process (clk_in)
 variable i : integer range 0 to pwm_max-1;
 begin
 if (reset='1' )then
 PWM_out <= '0';
 elsif(clk_in'event and clk_in = '1') then
 if (ena = '1') then
   if (i < pwm_hi) then 
     PWM_out <='1';
   elsif ((i > pwm_hi) and (i < pwm_lo)) then
     PWM_out <= '0';
   end if;
   if (i = pwm_max-1) then 
     i :=0;
   else
     i := i+1;
   end if;
 end if;
 
end process; 
end Behavioral;

du nguyen

unread,
Jun 7, 2011, 6:56:59 AM6/7/11
to dhd...@googlegroups.com
bạn ơi!
phức tạp hóa vấn đề đơn giản rui đấy!

Vào 17:34 Ngày 07 tháng 6 năm 2011, Admin[machdientu.net] <ad...@machdientu.net> đã viết:

du nguyen

unread,
Jun 7, 2011, 6:58:42 AM6/7/11
to dhd...@googlegroups.com
với lại dùng if đơn thuần cũng đc,tớ bảo đó là cách cua tớ ma
hihi mọi người phát triển theo hướng rieng thì tốt!


Vào 17:56 Ngày 07 tháng 6 năm 2011, du nguyen <nguyen...@gmail.com> đã viết:

Triệu Văn Hoàn

unread,
Jun 7, 2011, 7:29:56 AM6/7/11
to dhd...@googlegroups.com
hệ nói đúng rồi,đề bài thế có nghĩa là băm xung ra,70% mức 1,30% mức 0, nhưng về cái đoạn sau của hệ thì t không hiểu,t làm thế này,cho xung clock có tần số 0.5khz,xung cần tạo ra có tần số gấp 10 lần xung clock vì muốn dùng bộ đếm 10,mỗi 1 chu kì của xung clock thì bộ đếm tăng lên 1 và dùng lệnh case để cho đầu ra bằng 1 khi đếm=0,1,2,3,4,5,6 bằng 0 khi đếm=7,8,9 như vậy là đã thỏa mãn yêu cầu để bài
--Bằng--

đinh bằng

unread,
Jun 7, 2011, 8:20:11 AM6/7/11
to dhd...@googlegroups.com
à quên mất,xung clock tần số 50khz

Vào 18:29 Ngày 07 tháng 6 năm 2011, Triệu Văn Hoàn <trieuv...@gmail.com> đã viết:

Admin[machdientu.net]

unread,
Jun 7, 2011, 8:30:00 AM6/7/11
to dhd...@googlegroups.com
 hi đọc đoạn này của bạn Bằng thì OK rồi , thế này nha để tạo xung 5KHZ ta sử dụng 10 xung 500HZ đếm từ 1 , den 10 , phần còn lại làm như Du hay mấy bạn kia . Đảm bảo đúng tần số 5Khz dảm bảo cả độ rộng chuẩn .
ok để tối mình làm hoàn chỉnh sau đó post lại cho ae coi

Chinh Le

unread,
Jun 7, 2011, 8:35:25 AM6/7/11
to dhd...@googlegroups.com
Mình cũng làm gần giống Hệ. tần số mình sẽ sửa ở tần số của xung clock.Mình có thể thay giá trị của n trong GENERIC để băm xung theo yêu cầu của đề
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity bamxung is
generic (n: integer range 0 to 10:=4);
port(
ck,rst,en: in std_logic;
y: out std_logic);
end bamxung;

architecture arc of bamxung is
 
begin
process(ck)
variable c: integer range 0 to 9;
variable t: std_logic;
begin
if(rst='1') then
t:='0';
elsif (ck'event and ck='1') then
if(en='1') then
if (c<n) then
t:='0';
else
t:='1';
end if;
if(c=9) then
c:=0;
else
c:=c+1;
end if;
end if;
end if;
y<=t;
end process;
end arc;
Message has been deleted
Message has been deleted

Chinh Le

unread,
Jun 7, 2011, 8:41:45 AM6/7/11
to dhd...@googlegroups.com
tôi thử rùi bằng 9 thui chứ để bằng 10 thì số cung clock sẽ là 11/1 xung 

đinh bằng

unread,
Jun 7, 2011, 8:44:54 AM6/7/11
to dhd...@googlegroups.com
thành dễ đẻ rồi :))))))),clk=50khz nhá hệ

Chinh Le

unread,
Jun 7, 2011, 9:10:15 AM6/7/11
to dhd...@googlegroups.com
mô phỏng cái này ntn vậy?:-s mình chỉ mô phỏng đc ở xung ck tần số cao thui :P

du nguyen

unread,
Jun 7, 2011, 9:28:30 AM6/7/11
to dhd...@googlegroups.com
các bạn chưa xem mô phỏng của tớ rùi. như tớ nói xung mẫu của tớ là 50kHz
hệ số chia là 10(50/10=5) thì nó là dạng biến tướng của chia tần còn j.
dùng if không sai nhưng các bạn thử nhìn lại dùng cái nào hay hơn.

Vào 20:10 Ngày 07 tháng 6 năm 2011, Chinh Le <ducchi...@gmail.com> đã viết:

du nguyen

unread,
Jun 7, 2011, 9:29:54 AM6/7/11
to dhd...@googlegroups.com
tần số nào cũng mô phỏng đc nhung tần số nhỏ bạn phải Zoom out vào thì mới kiểm tra đc dạng xung

Vào 20:28 Ngày 07 tháng 6 năm 2011, du nguyen <nguyen...@gmail.com> đã viết:

Thắm Nguyễn

unread,
Jun 7, 2011, 9:35:25 AM6/7/11
to dhd...@googlegroups.com

du oi!!nếu mình mô phỏng o tần số nhủ những bài ở VHDL thi vẫn dc đúng k?

Admin[machdientu.net]

unread,
Jun 7, 2011, 9:51:18 AM6/7/11
to dhd...@googlegroups.com
Nào mọi người đưa ra ý kiến của mình xem nào . Tập hợp mọi ý kiến để chọn ra phương pháp tối ưu nhất , Vấn đề lớn sẽ thành nhỏ ngay thôi !!!

Chinh Le

unread,
Jun 7, 2011, 9:59:20 AM6/7/11
to dhd...@googlegroups.com
ok rùi Giờ mới biết trong VHDL có zoom. Thanks bạn Du nha

đinh bằng

unread,
Jun 7, 2011, 9:59:45 AM6/7/11
to dhd...@googlegroups.com
ý kiến gì m,giải quyết xong rồi còn gì,dùng if hoặc case,còn như bài du viết là
case dem is
            when 3 =>q<='0';
            when 10 =>q<='1';
            when others=>NULL;
        end case;
        if(dem=10) then
            dem:=1;
        else dem:=dem+1;
thì làm sao ra được xung liên tục được nhỉ

kha vu

unread,
Jun 7, 2011, 10:02:44 AM6/7/11
to dhd...@googlegroups.com
trong sách có ùi còn gì, co thể thay case=lệnh if, còn bài phát hiện chuỗi thì sao? mọi nguoi cho ý kiến đi, tớ mô phỏng thấy cũng đc, đay là phát hiện 0010

library IEEE;
use IEEE.STD_LOGIC_1164.all;

entity bt1 is
port(
rst : in STD_LOGIC;
clk : in STD_LOGIC;
din : in STD_LOGIC;
dout : out STD_LOGIC
    );
end bt1;

--}} End of automatically maintained section

architecture bt1 of bt1 is
begin
   process(rst,clk)
   variable temp:std_logic_vector (3 downto 0);
   begin
  if(rst='1') then dout<='0';
  elsif(clk'event and clk='1') then
  temp(3):=temp(2);
  temp(2):=temp(1);
  temp(1):=temp(0);
  temp(0):=din;
  end if;
  if(temp="0010") then dout<='1';
  else dout<='0';
  end if;
  end process;
-- enter your statements here --

end bt1;

Admin[machdientu.net]

unread,
Jun 7, 2011, 10:14:20 AM6/7/11
to dhd...@googlegroups.com
Xong roài  . Chúng ta giai quyết bài tiếp theo đi .




PWM.pdf
hinh anh.jpg

Admin[machdientu.net]

unread,
Jun 7, 2011, 10:18:14 AM6/7/11
to dhd...@googlegroups.com
Đính kèm tất cả file bai PWM , chú ý bài này chỉ cần dùng RST hoặc E là đủ , như bạn chính cho cả 2 hơi bất hợp lý. ma k cho cũng chẳng sao .
PWM.rar

hien nguyen thi

unread,
Jun 7, 2011, 11:19:25 AM6/7/11
to dhd...@googlegroups.com
tớ làm thế này liệu đúng chứ mọi người

Vào 20:18 Ngày 07 tháng 6 năm 2011, Admin[machdientu.net] <ad...@machdientu.net> đã viết:

Đính kèm tất cả file bai PWM , chú ý bài này chỉ cần dùng RST hoặc E là đủ , như bạn chính cho cả 2 hơi bất hợp lý. ma k cho cũng chẳng sao .



--
...***...Heohip_Heoxinh...***...
PWM.vhd
Waveform Editor 2.awf

hien nguyen thi

unread,
Jun 7, 2011, 11:25:41 AM6/7/11
to dhd...@googlegroups.com
Còn phần phát hiện chuỗi ý. t làm bài 0010. khi mô phỏng thì nếu 4bit liên tiếp đầu tiên đc nhận thì mô phỏng của t đúng. nhung nếu thêm 010 nghĩa là 0010010 thì bài cua t ko thể phát hiện được chuỗi thứ 2. mọi ng góp ý cho t với


--
...***...Heohip_Heoxinh...***...
vao_0010.vhd
Waveform Editor 1.awf

du nguyen

unread,
Jun 7, 2011, 12:05:22 PM6/7/11
to dhd...@googlegroups.com
làm trong process tin hieu sẽ là luôn tục

Vào 22:25 Ngày 07 tháng 6 năm 2011, hien nguyen thi <bachqu...@gmail.com> đã viết:

nguyen van huynh

unread,
Jun 7, 2011, 8:43:42 PM6/7/11
to dhd...@googlegroups.com
nén lại rùi gửi lên đi Em ơi!

AnLeE

unread,
Jun 8, 2011, 9:45:10 AM6/8/11
to dhd...@googlegroups.com
Hỏi đúng tủ rùi tớ vừa làm bài này xong !

k phát hiện đc là do bảng trạng thái của bạn có vấn đề ! :D

xem bài của tớ xem ! hình như là đúng :D

có j sai sót . . . chỉ giáo thêm !
MachDay0010.rar

AnLeE

unread,
Jun 8, 2011, 9:52:14 AM6/8/11
to dhd...@googlegroups.com

Tham khảo bảng trạng thái của t !


--
__________»-(¯`v´¯)-».*AnLeE*.»-(¯`v´¯)-»__________
Dãy0010.doc

AnLeE

unread,
Jun 8, 2011, 9:53:57 AM6/8/11
to dhd...@googlegroups.com
Ai biết làm thế nào để tạo dãy xung ( VD : 001000111) theo ý mình đc k , ngoài cách chọn RANDOM ????

kha vu

unread,
Jun 8, 2011, 10:10:01 AM6/8/11
to dhd...@googlegroups.com


cậu thử cho chuỗi 0010010 xem nó phát hiện ra mấy chuỗi 0010

kha vu

unread,
Jun 8, 2011, 10:13:26 AM6/8/11
to dhd...@googlegroups.com


đây là bài tập 1 của tớ hơi ngắn 1 tí, với mỗi dãy khác nhau chỉ cần thay giá trị ở chỗ temp là ổn, mọi người cho ý kiến, khi cho dãy 0010010 vào thì nó phát hiện ra 2 chuỗi 0010

bt1.rar

Admin[machdientu.net]

unread,
Jun 8, 2011, 10:15:22 AM6/8/11
to dhd...@googlegroups.com
Mọi người tiếp tục đóng góp ý kiến của mình xem nào ?? Vấn đề sắp được giải quyết rồi !!!

hien nguyen thi

unread,
Jun 8, 2011, 10:31:32 AM6/8/11
to dhd...@googlegroups.com
b An có thể giải thích cái bảng tt cho t trong TH ở TT C nếu đầu vào là 0 sao lại vẫn ở TT C đc vậy?


--
...***...Heohip_Heoxinh...***...

đinh bằng

unread,
Jun 8, 2011, 10:33:16 AM6/8/11
to dhd...@googlegroups.com
làm sao để cho 1 dãy bất kì vào vậy bạn

Admin[machdientu.net]

unread,
Jun 8, 2011, 10:35:51 AM6/8/11
to dhd...@googlegroups.com
Dùng f(t)  cho từng giá trị theo thời gian .

hien nguyen thi

unread,
Jun 8, 2011, 11:30:31 AM6/8/11
to dhd...@googlegroups.com
Cảm ơn b An rất nhiều. Nhờ b mà m đã hiểu. Tớ đã làm bảng TT. Mọi ng chỉ cần xét kỹ là sẽ làm được. Chúc mọi người thi thật tốt




--
...***...Heohip_Heoxinh...***...
Bảng TT.doc

AnLeE

unread,
Jun 8, 2011, 11:54:25 AM6/8/11
to dhd...@googlegroups.com
ô ! nhìn lại bài của t, lại thấy sai chút :D

cái E + 0 = C nhj? :D làm đi làm lại vẫn nhầm hết chỗ này đến chỗ nọ , hi vọng lúc thi k nhầm vậy nưa !

Vào 22:30 Ngày 08 tháng 6 năm 2011, hien nguyen thi <bachqu...@gmail.com> đã viết:

Cảm ơn b An rất nhiều. Nhờ b mà m đã hiểu. Tớ đã làm bảng TT. Mọi ng chỉ cần xét kỹ là sẽ làm được. Chúc mọi người thi thật tốt




--
...***...Heohip_Heoxinh...***...



--

AnLeE

unread,
Jun 8, 2011, 11:57:34 AM6/8/11
to dhd...@googlegroups.com
Thấy sai chả bảo t ! :(

Vào 22:30 Ngày 08 tháng 6 năm 2011, hien nguyen thi <bachqu...@gmail.com> đã viết:

Cảm ơn b An rất nhiều. Nhờ b mà m đã hiểu. Tớ đã làm bảng TT. Mọi ng chỉ cần xét kỹ là sẽ làm được. Chúc mọi người thi thật tốt




--
...***...Heohip_Heoxinh...***...



--
Reply all
Reply to author
Forward
0 new messages