CONTACT | TEL : 02-728-3440, EMAIL : SALES@ASTRONLOGIC.COM
ASTRON LOGIC RESEARCH AND DEVELOPMENT CO.,LTD.

» WEBBOARD

control counter

คือว่าผมมี input 8 bit จะนำมาควบคุม clk เพื่อที่จะต่อเข้าตัว counter ถ้า input มีค่ามาก จะจ่าย clk มาก ขอคำแนะนำหน่อยครับ หรือว่ามีตัวอย่างโปรแกรมก็ช่วยส่งไปให้ด้วย ขอบคุณครับ

จากคุณ : satan ตั้งกระทู้นี้เมื่อ 10:26 [10/02/2003]

ความคิดเห็นที่1

น่าจะใช้การ Multiplex เลือกความถี่เอานะครับ โดยที่ก่อนจะเข้า Multiplex เราจะต้องมีวงจรหารความถี่ให้ได้ค่าความถี่ที่ต้องการช฿่งอาจจะมีหลายความถี่ จากนั้นก็เอาความถี่ค่าต่างๆ ที่ได้จากการหารแล้วมาเข้าวงจร Multiplex เพื่อเลือกค่าความถี่ต่างๆออกทาง เอาท์พุทต่อไป

จากคุณ : support@astronlogic.com 19:35 [10/02/2003]

ความคิดเห็นที่2

หรืออีกวิธีก็คือสร้างวงจรหารความถี่ขึ้นมาโดยค่าที่จะหารขึ้นอยู่กับอินพุท 8 บิต เช่นหากอินพุท 8 บิตมีค่าเท่ากับ 100D ก็แสดงว่าให้ความถี่ที่จะออกเอาท์พุทโดนหาร 100 ประมาณนั้นนะครับ

จากคุณ : support@astronlogic.com 19:40 [10/02/2003]

ความคิดเห็นที่3

ตามความคิดเห็นที่ 2 ผมลองเขียนโปรแกรมดู complier แล้วมัน error ครับ
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity clkdiv is
port(
clk : in std_logic;
b : in integer range 0 to 255;
o: out std_logic);
end clkdiv;
architecture RTL of clkdiv is
process(clk)
begin
o <= clk/b;
end process;
end RTL;
พี่ช่วยแนะนำหน่อยครับ คือผมจะใช้ clk ที่มากับ board ขอบคุณอีกครั้งครับ

จากคุณ : satan 08:16 [11/02/2003]

ความคิดเห็นที่4

อย่างนี้ไม่ได้หรอกครับ error แน่นอน

จากคุณ : support@astronlogic.com 14:18 [11/02/2003]

ความคิดเห็นที่5

library ieee;
use ieee.std_logic_1164.all;

entity div_clk is
port(
clk_in : in std_logic;
div : in integer range 0 to 255;
clk_out : out std_logic
);
end div_clk;

architecture rtl of div_clk is
begin
process(clk_in)
variable count : integer range 0 to 255 := 0;
variable clk_t : std_logic := '0';
begin
if clk_in'event and clk_in = '1' then
if count < div then
count := count + 1;
clk_t := clk_t;
else
count := 0;
clk_t := not(clk_t);
end if;
clk_out <= clk_t;
end if;
end process;
end rtl;

ความถี่ที่โดนหารทาง output จะเท่ากับ 2 * (Div+1) เช่น อินพุทเข้ามา 10 Mhz ตั้งค่า Div เท่ากับ 1 ค่าเอาท์พุทที่ได้จะเท่ากับ 10 MHz / 2*(1+1) = 2.5MHz

จากคุณ : support@astronlogic.com 14:27 [11/02/2003]

ความคิดเห็นที่6

ตามตัวอย่างโปรแกรมความคิดเห็นที่ 5 ของพี่ เราเปลี่ยนจากการหาร เป็นการคูณได้หรือไม่ครับ ทำอย่างไรครับ

จากคุณ : satan 18:28 [07/03/2003]

ความคิดเห็นที่7

ถ้าความหมายของการคูณของคุณคือการเพิ่มค่าความถี่ไม่สามารถทำได้ครับ

จากคุณ : support@astronlogic.com 20:58 [07/03/2003]

ความคิดเห็นที่8

ช่วยแจงความหมายของแต่ละบรรทัดจะใด้ใหมครับ
อยากเข้าใจ

จากคุณ : nacarin 18:27 [29/01/2004]
ร่วมด้วยช่วยกันตอบครับ
ชื่อ :
E-Mail :
คำตอบ :







คลิกเพื่อแทรกรูป