initial begin clk 0 forever #5.208 clk !clk end. Здесь мы постоянно генерируем тактовый меандр с полупериодом 5208 пс, что соответ-ствует частоте 96 МГц. Напомним, что опера-тор forever — не синтезируемый, полезен толь-ко при моделировании.


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
ирм уЫрвсЫ м
удсй уузбЫдсфф миЫраммм уу
вуруиа. Оалдах миЫраммх зудЫрлми збЫдйф
МдЫзт
уурЫдЫбхЫи сауравбЫсмЫ уу
вуруиа (урмсмраЫи зсаьЫсмЫ –1
мбм +1).
ВсулмиЫбт
–i
, оао дугадсваЫизх ьмиаиЫбт,
Ызит уиуи урЫзбувйисо tan(
ерЫдзиавмр, ьиу мзлудссо вЫоиур
дбмсуо 10
уубсузитф бЫлми са
узм Л.
ВЫоиур сЫублудмру уувЫрсйит са
йгуб 55°
3). Оуурдмсаис сувугу вЫоиура:
Гауурсмр, ьиу уоусьаиЫбтссЫ рЫзйбтиа
ис, раззьмиасссЫ з
ууруптф CORDIC-абгу-
рмира, сЫублудмру йрсулмит са
оууккммм
Ыси дЫкурраммм О
, оуиурсо равЫс 0,607.
В уЫрвуо миЫраммм рс уувЫрсйбм вЫоиур
45°, ьиу в
миугЫ зузиавмбу разсммй з
омр йгбур 10°. МарЫимр, ьиу сауравбЫсмЫ
уувуруиа уурЫдЫбхЫизх мрЫссу уиуо разсм
Иао оао разсмма йгбув в
уЫрвуо миЫраммм
уубйьмбазт уубулмиЫбтсуо, сауравбЫсмЫ
уувуруиа сЫ мзрЫсмбузт. еубйьЫсссо в
вуо миЫраммм вЫоиур рс уувЫрсйбм ЫпЫ,
рЫстомо йгуб
МдЫзт разсмма в
йгбал уубйьмбазт уирмма
иЫбтсуо, зсаьми, в
ирЫитЫо миЫраммм (рмз.
6)
рс дублсс мзрЫсмит сауравбЫсмЫ разьЫиа.
) =
Вс зарЫимбм, ьиу з
оалдуо миЫраммЫо раз
смма рЫлдй йгбарм йрЫстоаЫизх. еууиурй
рс рулЫр зоазаит, ьиу ьЫр бубтоЫ миЫраммо
урудЫбаЫр, иЫр ббмлЫ уудбЫрЫрзх о
сйлсурй
вЫоиурй, а
зсаьми, рЫстоЫ бйдЫи уугрЫосузит
рЫзйбтиаиа.
ДаваоиЫ урууйзимр уузбЫдйфпмЫ миЫра
ммм, а
раззруирмр иубтоу 8
ф миЫраммф,
ьиубс йбЫдмитзх в
вЫрсузим разьЫиа оуурдм
саи йгба CORDIC-абгурмирур:
МдЫзт рс вмдмр, ьиу уомбоа в
ИЫуЫрт, ьиубс звЫрмит оуурдмсаис вЫоиу
ра, уубйьЫссугу CORDIC-абгурмирур, з
сЫЫ раззьмиасссрм, Ызбм иао рулсу всра
змитзх, са
оабтойбхиурЫ, сйлсу уубйьЫсссЫ
зсаьЫсмх оуурдмсаи йрсулмит са
оууккм
ммЫси дЫкурраммм K
Оао вмдмр, уибмьафизх усм взЫгу са
0,01.
Иаомр убразур, сйлсах иуьсузит всьмзбЫ
смо дузимгаЫизх йвЫбмьЫсмЫр оубмьЫзива
ГадЫЫрзх, раиЫраимьЫзоах ьазит зиаитм
сЫ йиурмба ьмиаиЫбх, су
сауурсмр: рс зирЫ
рмрзх ураоимьЫзом «з
сйбх» рЫабмзуваит
«лЫбЫзЫ» ммкрувйф змсйзумдй.
ниубс бйьоЫ урЫдзиавбхит зЫбЫ змзиЫрй,
иаолЫ ьЫиоу уусмраит взамрудЫозивмЫ ру
дйбЫо уруЫоиа рЫлдй зубуо, зузиавмр зирйо
Ииао, в
саоЫо змзиЫрЫ дублЫс бсит удмс
влуд
→ иаоиувсо (саурмрЫр, 96
В№м), два
вслуда дасссл дбх убумл МАе (разрхдсу
зитф 12
бми) м
иаоиувсЫ ьазиуис дбх убумл
ниубс уубйьмит сйлсйф ьазиуий зм
сйза са
вслудЫ, сЫублудмру са
влудЫ оус
вЫоЫра CORDIC оалдсо иаои влудсуо ьа
мзрЫсхит казй з
уурЫдЫбЫссср
абгурмирур. Эиу бйдЫи всуубсхит рудйбт
→ рудйбт йуравбЫсмх оа
гур. ниубс оалдсо сувсо иаои
са
лудЫ змзиЫрс уухвбхбзх сувсо уиьЫи змсйза,
рЫабмзйЫр CORDIC оусвЫоЫрур (уузбЫдува
иЫбтсах мЫууьоа уувураьмвафпмл рудйбЫо
). ГЫублудмру зоазаит, ьиу CORDIC
всьмзбхЫи иубтоу уЫрвйф ьЫивЫрит уЫрмуда
змсйзумдс. Дзиабтсйф ьазит змгсаба ууру
лЫи «дурмзуваит» рудйбт
Раззруирмр мЫрарлмф рудйбЫо уруЫоиа,
оуиурсо куррмрйЫи змсйз м
оузмсйз дбх
→ губувсуо рудйбт, мбм, оао
гувурхи FPGA-дмзаосЫрс,
top-level
рудйбт.
Дс зудЫрлми в
зЫбЫ взЫ узиабтссЫ рудйбм,
звхзсваЫи мл рЫлдй зубуо м
мрЫЫи збЫдйф
пмЫ влудссЫ м
вслудссЫ змгсабс:
clk
→ иаоиувах ьазиуиа уи
PLL
всбрассуо еПИЗ. В
саоЫр уруЫоиЫ

В№м.
output
led1
→ вслуд са
звЫиудмуд.
output
idclk, qdclk
→ иаоиувсЫ вслудс
дбх оалдуо МАе.
[11:0] I, Q
→ уизьЫис дбх двйл
МАе (змсйз м
оузмсйз зууивЫизивЫссу),
дбх куррмрувасмх овадраийрсугу змг
→ рудйбт, куррмрйфпмо
йгуб (оаг казс) дбх всьмзбЫсмх змсйза
оузмсйза, а
иаолЫ ьЫивЫрит, в
оуиуруо
салудмизх вслудсуо змгсаб. Гауурсмр,
ьиу ьазиуиа вслудссл змсйза м
оузмсйза
дублса зузиавбхит 10
о№м. Зумзуо влудссл
вслудссл змгсабув:
Cordic.v
→ рудйбт, куррмрйфпмо оус
вЫоЫр мз
ббуоув, всьмзбхфпмл урурЫлй
иуьссЫ зсаьЫсмх змсйза м
оузмсйза (зудЫр
лми взЫ миЫраммм всьмзбЫсмо). ВлудссЫ
вслудссЫ змгсабс рудйбх:
rst
→ аууараиссо збруз урм вобф
theta_i
→ каза, дбх оуиуруо сЫуб
лудмру всьмзбмит змсйз м
оузмсйз.
quarter_in
→ влудсах ьЫивЫрит змг
quarter_out
→ вслудсах ьЫивЫрит
→ саьабтсуЫ зсаьЫсмЫ змсйза
(равсу оууккмммЫсий дЫкурраммм).
y_i
→ саьабтсуЫ зсаьЫсмЫ оузмсй
за (равсу сйбф).
→ всьмзбЫссуЫ зсаьЫсмЫ зм
y_o
→ всьмзбЫссуЫ зсаьЫсмЫ оу
theta_o
→ узиаиуьсуЫ зсаьЫсмЫ
йгба (уугрЫосузит казс).
→ рудйбт, уудвудхпмо
всьмзбЫссуЫ зсаьЫсмЫ змсйза м
оузмсйза
ууд вЫзт дмауазус МАе.
Влудс м
вслудс
асабугмьсс раззруирЫссср всоЫ.
→ ургасмзйЫи аууараиссо
збруз м
йзиасувой взЫл рЫгмзирув в
саьабт
суЫ зсаьЫсмЫ.
→ рудйбт, уувураьмвафпмо вЫо
иур са
задасссо йгуб (рЫабмзйЫи оалдйф
миЫраммо, раззруирЫсссл в
раиЫраим
ьЫзоуо ьазим зиаитм).
ИЫуЫрт саьсЫр асабмзмруваит оуд уимл ру
дйбЫо (взуурсмр оалдйф мз
миЫраммо в
иЫраимьЫзоуо ьазим зиаитм).
Модуль Sinus10kHz.v
Koef_Mash = 13'h4DB;
clk; // 96 В№м
led1; // звЫиудмуд
[Width_Data-1:0] Q; // уизьЫи оузмсйза
В уумзассуо ьазим оуда уурмру оауом
рудйбх м
влудссл/вслудссл змгсабув урм
вЫдЫсс иаолЫ уарарЫирс. еухзсмр мл зса
→ разрхдсузит всьмзбхЫ
ругу йгба. Разрхдсузит казс дублса
бсит бубтоЫ разрхдсузим вслудссл
уизьЫиув, ьиубс йвЫбмьмит иуьсузит вс
→ оууккмммЫси дЫкурраммм
раиЫраимьЫзойф ьазит зиаитм).
Freq_Factor
→ каоиур вслудсуо ьазиуис
(Ызбм рулсу иао всразмитзх). БйдЫи ууд
рубсу уухзсЫс урм раззруирЫсмм рудйбх
Иао оао оууккмммЫси дЫкурраммм урЫд
зиавбхЫи зубуо вЫпЫзивЫссуЫ ьмзбу рЫстоЫ
Ыдмсммс (0,607), сар сЫублудмру урЫдзиа
вмит Ыгу ьмзбур разрЫрсузитф 12
)/2 = 12’h4DB.
еуьЫрй урм разьЫиЫ оууккмммЫсиа дЫкур
раммм рс взхбм уубувмсй дмауазуса, бйдЫи
уухзсЫсу урм раззруирЫсмм рудйбх
ерудублмр раззруирЫсмЫ рудйбх:
[Width_Data:0] Xo_cordic, Yo_cordic;
[Width_Data:0] Xq, Yq;
Xi_cordic
м
Yi_cordic
→ уиу са
ьабтсуЫ зсаьЫсмЫ
X м
Y зузиавбхфпмл
уЫрвуо миЫраммм раиЫраимьЫзоуо
ьазим зиаитм).
м
Yo_cordic
→ уиу
всьмзбЫсссЫ зсаьЫсмх
X м
Y зузиавбхфпмл
уузбЫдсЫо миЫраммм). Разрхдсузит
Yo_cordic
м
йвЫбмьмбазт
бми ууиурй, ьиу урм всьмзбЫсмхл сар
ууирЫбйЫизх ЫпЫ м
зсаоувсо разрхд (12
бми
дасссл + 1
зсаоувсо бми = 13
бми). Змгсаб
→ зсаьЫсмЫ ьЫивЫрим вслудсу
гу змгсаба
→ са
влудЫ оусвЫоЫра CORDIC.
, зууивЫизивЫссу,
→ зса
ьЫсмЫ ьЫивЫрим вслудсугу змгсаба са
вслудЫ
оусвЫоЫра:
Xq, Yq
→ уизьЫис вслудссл зм
сйза м
оузмсйза, адауимрувасссЫ о
дмауазу
сй зсаьЫсмо МАе.
Га вслуд
уудвЫдЫса «буг. 1», ьиубс йбЫ
еПИЗ уудасу умиасмЫ.
Q[Width_Data-1:0] = Yq[Width_Data-1:0];
ВсьмзбЫсссЫ зсаьЫсмх змсйза м
оузмсй
→ са
вслуд еПИЗ, а
→ са
бугмьЫ
зомЫ влудс дасссл МАе.
Влудсуо иаоиувуо ьазиуиуо иаоимрйфизх
В саьабЫ всьмзбЫсмо сао вЫоиур бЫлми
X, м
дбмса Ыгу бйдЫи равса оууккммм
Ысий дЫкурраммм: уиу мзбавми саз уи
ммм йрсулЫсмх в
оусмЫ всьмзбЫсмо. Ииао,
саьабтсуЫ зсаьЫсмЫ змсйза уудас оууккм
ммЫси дЫкурраммм
, а
саьабт
суЫ зсаьЫсмЫ оузмсйза
→ субт.
ДабЫЫ уудобфьаЫр рудйбм бубЫЫ смзоугу
Эиуи ббуо уузбЫ уудаьм умиасмх
еПИЗ йдЫрлмваЫи вслуд
в
смзоур
йрувсЫ сЫзоубтоу иаоиув
, ьиу йзиасавбм
ваЫи в
саьабтсуЫ зсаьЫсмЫ рудйбм
select_quarter. v
ГмлЫ уудобфьЫс рудйбт
step_control. v
step_control_user.freq_factor = Freq_Factor;
step_control_user ( .clk(clk), .Angle(Angle_i),
Га вслудЫ уиугу рудйбх оалдсо иаои
уухвбхЫизх сувуЫ зсаьЫсмЫ йгба (мбм казс),
дбх оуиуругу сЫублудмру всьмзбмит зсаьЫ
смЫ змсйза м
оузмсйза. ИаолЫ са
вслудЫ уу
хвбхЫизх ьЫивЫрит вслудсугу змгсаба. Всйирт
рудйбх
уЫрЫдасу зсаьЫсмЫ уа
ИдЫр дабЫЫ:
.x_o(Xo_cordic), .y_o(Yo_cordic), .theta_o(Angle_o),
МдЫзт уудобфьЫс рудйбт
. О
Ыгу
влудар м
вслудар уудобфьЫсс всоЫуум
засссЫ змгсабс. ИаолЫ Ырй зуубпЫсс зсаьЫ
МаиЫр уудобфьЫс рудйбт
.Xi(Xo_cordic), .Yi(Yo_cordic),
.Xo(Xq), .Yo(Yq),
Га влудс
м
уиугу рудйбх уудобфьЫ
сс всьмзбЫсссЫ CORDIC-абгурмирур зса
ьЫсмх змсйза м
оузмсйза. Га
вслудал
оалдср иаоиур
уухвбхфизх, в
рузим уи
влудсуо ьЫивЫрим
, уизьЫис
оузмсйза дбх МАе.
Иао, з
заоусьмбм, уЫрЫлудмр
рудйбхр бубЫЫ смзоугу йрувсх.
Модуль
оауоа, влудс м
вслудс рудйбх аууараи
сугу збруза
ГЫи зрсзба убрхзсхит сазсаьЫсмЫ удсугу
иаоиувугу влуда м
удсугу вслуда: уиу уусхи
сазвасмф. еЫрЫодЫр зразй о бугмоЫ:
always @ (posedge clk)




МдЫзт вмдсу, ьиу уузбЫ уудаьм умиасмх
еПИЗ в
дассур рудйбЫ урумзвудмизх мс
орЫрЫси зьЫиьмоа
. еуоа зсаьЫсмЫ
уиугу зьЫиьмоа рЫстоЫ 10, змгсаб
салу
дмизх в
всзуоур зузиухсмм. ЗууивЫизивЫссу,
уузбЫ 10
clk
зсаьЫсмЫ змгсаба збруза
уЫрЫлудми в
зузиухсмЫ бугмьЫзоуо Ыдм
сммс, а
count_reset
кмозмрйЫизх
зсаьЫсмм 15. Иаомр убразур, рулсу зоа
заит, ьиу в
иЫьЫсмЫ уЫрвсл 10
уЫрмудув иао
иувугу змгсаба
узиабтссЫ рудйбм уруЫоиа
дублсс урм зсаьЫсмм змгсаба
, равсур
ЫдмсммЫ, йзиасувмит звум рЫгмзирс в
саьабт
Модуль step_control.v
оауоа, влудс/вслудс м
уарарЫирс рудйбх:
fourth = 3;
freq_factor = 16'd3400;
acc_decr = 16'd10000 - freq_step;
м
уиу зузиухсмх оусЫьсугу авиураиа, оуиурсо
рс раззруирмр смлЫ.
рс йлЫ йуурмсабм,
вуи з
сазсаьЫсмЫр уарарЫира
сЫуб
лудмру разубраитзх.
ГазсаьЫсмЫр дассугу рудйбх хвбхЫизх мз
рЫсЫсмЫ зсаьЫсмх казс
оалдсо иаои
са
иаоуЫ зсаьЫсмЫ, урм оуиурур урм за
дассуо иаоиувуо ьазиуиЫ в
В№м са
вслудЫ
еПИЗ рс уубйьаЫр ммкрувуо змсйз з
ьа
о№м.
МсаьЫсмЫ
в
зууивЫизивйЫи
казЫ в
90° (
/2). Дууйзимр, Ызбм оалдсо
clk
рс бйдЫр йвЫбмьмваит
Angle
са
1,
вслудЫ рс уубйьмр змсйз з
ьазиуиуо
= 7462,68
№м (са
уудЫбЫсу,
ьиубс уубйьмит уубссо уЫрмуд, а
сЫ иубтоу
ду
ДабЫЫ, Ызбм рс луимр уубйьмит са
вслудЫ
ьазиуий, оуиурах бубтоЫ имуувуо в
раза,
Ызит 8955
№м, иу
иаолЫ йвЫбм
ьмваит оалдсо иаои
са
1, су
оалдсо ух
исо иаои
→ са
2 (ууиурй ьиу ьазиуиа бубт
оЫ имуувуо са
ьазит). А
лЫ бсит,
Ызбм сйлсах сар ьазиуиа (10
о№м) бубтоЫ
имуувуо в
раза? Духит вЫрсЫрзх о
зиуиЫ 8,955
о№м. ВузтрЫр сЫомо зьЫиьмо Acc
разрхдсузитф 16
бми м
бйдЫр оалдсо иаои
урмбавбхит о
сЫрй зсаьЫсмЫ 16’d2000. Оугда
зсаьЫсмЫ зьЫиьмоа уЫрЫвабми за
000 (а
уиу
бйдЫи урумзлудмит раз в
иаоиув), зсаьЫсмЫ
сйлсу бйдЫи йвЫбмьмит сЫ са
1, а
2.
ЗбЫдуваиЫбтсу, ьиубс уубйьмит са
вслудЫ
ьазиуий в
о№м, збЫдйЫи оалдсо иаои
йвЫ
бмьмваит Acc са
3400 (иао оао сйлсах сар ьа
зиуиа бубтоЫ имуувуо в
раза). Вуи уиойда
взхбузт зсаьЫсмЫ каоиура вслудсуо ьазиуис
, у
оуиурур рс йуурмсабм всоЫ.
звхзм з
уимр даваоиЫ саумоЫр оуд, оуиурсо
зууивЫизивйЫи мзбулЫссурй абгурмирй:
[15:0] M = freq_factor; // 16'd3400
always




ЗбЫдйЫи дубавмит иубтоу ирм рурЫсиа:
урм ’1’ уузвубхЫи йвЫбм
са
2 (оао рс йвмдмр уузлЫ),
йзбувмЫ
всуубсхЫизх иао
ьазиу, оао йоазасу в
всоЫ уумзассур абгу
о№м.
еу
змгсабй
зьЫиьмо-
аоойрйбхиур
Acc
убсйбхЫизх (уиу бйдЫи
урумзлудмит са
рйбЫлЫ уЫрЫобфьЫсмх зу
зиухсмо авиураиа).
А иЫуЫрт раззруирмр оусЫьссо авиураи,
рЫабмзйфпмо мсорЫрЫси/дЫорЫрЫси казс,
иаолЫ уЫрЫобфьЫсмЫ ьЫивЫриЫо.
always

//зузиухсмЫ уЫрвуо ьЫивЫрим уЫрмуда змсйзумдс


//зузиухсмЫ виуруо ьЫивЫрим уЫрмуда змсйзумдс


//зузиухсмЫ ирЫитЫо ьЫивЫрим уЫрмуда змсйзумдс


fourth:
//зузиухсмЫ ьЫивЫриуо ьЫивЫрим уЫрмуда змсйзумдс

ерумЫзз, уумзсвафпмо оусЫьссо авиу
раи, дувубтсу груруздомо, ьиубс урмвудмит
Ыгу уубсузитф. еууиурй урмвЫдЫр оуд бмот
уЫрвугу (
) зузиухсмх авиураиа:









МдЫзт 12
разрхдссо зьЫиьмо
оалдср иаоиур
clk
вЫдЫи зьЫи уи
ду
3216
оалдур зузиухсмм (оалдуо ьЫивЫрим).
разрхдссо зьЫиьмо
зудЫрлми мрЫссу
ий казй, дбх оуиуруо сЫублудмру раззьмиаит
зсаьЫсмЫ змсйза м
оузмсйза.
уудобфьЫс
влуд оусвЫоЫра, раззьмисвафпЫгу змсйз
оузмсйз дассуо казс.
м
ураоимьЫзом мдЫсимьсс, за
мзобфьЫсмЫр иугу,
ьиу уЫрвсо ву
взЫл зузиухсмхл иубтоу йвЫбм
ьмваЫизх, а
виуруо йвЫбмьмваЫизх/йрЫстоаЫи
зх в
завмзмрузим уи
зузиухсмх авиураиа. Езбм
змгсаб
салудмизх в
смзоур зузиух
смм, иу
м
йвЫбмьмвафи звум
зузиухсмх са
1, а
Ызбм в
всзуоур
→ иу
2.
Иаомр убразур убЫзуЫьмваЫизх сйлссо уЫрм
уд вслудсугу змсйза в
о№м. В
оалдур зузиу
хсмм оусирубмрйЫизх рурЫси уЫрЫлуда са
дйфпЫЫ зузиухсмЫ. Оугда зьЫиьмо
дузимгаЫи зсаьЫсмх 3216 (зууивЫизивйЫи казЫ
90°), са
збЫдйфпмо иаои
авиураи уЫрЫодЫи
ДабЫЫ раззруирмр уибмьмЫ узиабтссл
зузиухсмо авиураиа уи
уЫрвугу. Ву
виурур
ьЫивЫриур зузиухсмм узйпЫзивбхЫизх
сЫ мсорЫрЫси зьЫиьмоа
Angle
(оао в
уЫрвур
зузиухсмм), а
дЫорЫрЫси. ИрЫитЫ зузиухсмЫ
мдЫсимьсу уЫрвурй.
ДйраЫр, ьмиаиЫбф сЫ сйлсу убрхзсхит, оа
оуЫ зсаьЫсмЫ змгсаба
м
сйлсу
уЫрЫдаваит в
оалдур зузиухсмм.
ГмлЫ уумзас урумЫзз, оуиурсо разрЫоаЫи
always
ДабЫЫ раззруирмр иао сазсваЫруЫ «хдру»
→ оусвЫоЫр, рЫабмзйфпмо взЫ миЫ
раммм разьЫиа зсаьЫсмо змсйза м
оузмсйза
дбх оаоугу-иу йгба.
Модуль cordic.v
Раззруирмр оауой рудйбх, влудс/вслудс
[width_data:0] theta_o; //узиаиуьсуЫ зсаьЫсмЫ
В уарарЫирал йуурхсйис разрЫрсузим рЫ
гмзирув дбх змсйза м
оузмсйза (width_data),
иаолЫ разрЫрсузит рЫгмзирув дбх казс
(width_angle). Гауурсмр, ьиу разрЫрсузит
казс бубтоЫ разрЫрсузим змсйза м
оузмсй
за, дбх бубЫЫ иуьсугу всьмзбЫсмх. ГазсаьЫсмЫ
влудув м
вслудув рудйбх рс убрхзсмбм расЫЫ.
Раззруирмр кйсоммф, оуиурах всдаЫи дбх
оалдугу убЫрЫсиа оусвЫоЫра звуЫ зсаьЫсмЫ
ароиасгЫсза.


















ВЫпЫзивЫссуЫ зсаьЫсмЫ ароиасгЫсза сЫуб
лудмру лрасмит в
17
разрхдссл рЫгмзирал.
нмиаиЫбт рулЫи вуубсЫ зуравЫдбмву задаит
вууруз: «А
ууьЫрй иаомЫ зирасссЫ зсаьЫсмх
ароиасгЫсзув?» ВЫрсЫрзх уухит сЫсадубгу
раиЫраимоЫ. ермвЫдЫр зсаьЫсмх ароиасгЫс
ббуоув оусвЫоЫра:
ИЫуЫрт йлЫ рулсу зоазаит, ьиу всьмз
бЫссуЫ зсаьЫсмЫ змсйза м
оузмсйза сЫ бйдЫи
урЫвсоаит уомбом в
0,001°. Гу
сар сйлсу
уим сЫмЫбсЫ зсаьЫсмх уЫрЫвЫзим в
ммкрувуо
вмд, ьиубс рулсу бсбу мл лрасмит в
зирал. Взуурсмр, ьиу разрхдсузит йгба рс
всбрабм са
разрхда бубтоЫ, ьЫр разрЫр
сузит рЫгмзирув дасссл (X м
Y). Мсаьми, дма
уазус урмсмраЫрсл зсаьЫсмо 16
разрхдсугу
→ 0…216 = 0…65
535. Гу
рс бйдЫр
мзуубтзуваит иубтоу уубувмсй уиугу дмауазу
са (0…32
767), ьиубс уудугсаит всьмзбЫсссЫ
уизьЫис ууд вЫзт дмауазус МАе. (еудрубсЫЫ
уиур бйдЫи раззоазасу урм раззруирЫ
смм рудйбх
.) еЫрЫвЫдЫр
зсаьЫсмЫ 0,785
рад (arctg(1)) в
зсаьЫсмЫ дбх
разрхдсугу рЫгмзира: 32
7680,785 = 25
736.
лЫ убразур зсаьЫсмх узиабтссл аро-
иасгЫсзув ьмиаиЫбт рулЫи уузьмиаит зар.
ниубс звхзаит взЫ убЫрЫсис оусвЫоЫра,
еудобфьмр влудссЫ м
вслудссЫ дасссЫ
А у
уудобфьЫсмм зсаьЫсмо йгбув раззоа
лЫр уудрубсЫЫ:
inbuf_ang[width_angle-1:width_angle-width_data] =
Иао оао разрхдсузит йгба сар сйлсу йвЫбм
ьмит з
ду
16, рс мзуубтзувабм бйкЫр
, в
оуиурур зиаромо бми
→ зсаоувсо,
збЫдйфпмЫ 12
→ йгуб, дбх оуиуругу сЫуб
лудмру в
миугЫ раззьмиаит змсйз м
оузмсйз,
рбадомЫ 4
бмиа зауубсхЫр сйбхрм. МсаьЫсмЫ
йгба (
) са
вслудЫ оусвЫоЫра хв
бхЫизх узиаиуьсср зсаьЫсмЫр йгба (лараоиЫ
рмзйЫи уугрЫосузит всьмзбЫсмо) м
уудобф
ьаЫизх са
вслуд рудйбх
. еЫрЫодЫр
уудобфьЫсмф рудйбЫо
(взуурсмр:
мрЫссу уиуи рудйбт убЫзуЫьмваЫи убЫрЫсиар
ссо уувуруи вЫоиура
→ оалдйф мз
миЫраммо).
Оао бсбу вмдсу са
зирйоийрсуо злЫрЫ, оубм
ьЫзиву рудйбЫо (миЫраммо)
дублсу
бсит равсу 16. Эиу рулсу здЫбаит убсьсср
зуузубур: басабтсу уЫрЫьмзбмит взЫ рудйбм,
зиаитЫ рс урмвЫдЫр иубтоу уЫрвсо (0
о)
);
);
ДаваоиЫ сЫ бйдЫр ууоа убрапаит всмрасмЫ
уудобфьЫсмЫ о
рудйбхр
иаомл уа
рарЫирув, оао
м
, а
зугбазмрзх,
ьиу уудобфьаит иаомр убразур удсм м
лЫ
рудйбм, да ЫпЫ м
иаоур оубмьЫзивЫ, оао рм
смрйр сЫ ураоимьсу. А
Ызбм в
урумЫззЫ раз
рабуиом вс бйдЫиЫ вартмруваит оубмьЫзиву
миЫраммо? №уразду оразмвЫЫ м
оуруаоисЫЫ
всгбхдми иаоах оусзирйоммх:




МдЫзт з
ууруптф уЫрЫрЫссуо
i м
оусзирйо
авиураимьЫзом зуздафизх взЫ
уозЫрубхрув рудйбх
. Эим уозЫр
убхрс зуЫдмсЫсс дрйг з
дрйгур раззмварм
мЫуЫо, оуиурсЫ бсбм йуурхсйис всоЫ.
Оалдурй уозЫрубхрй уЫрЫдасс зсаьЫсмх мз
вЫзиссл сар уарарЫирув (
дузЫбЫ сЫмзвЫзиссл, иаомл оао:
→ оубмьЫзиву разрхдув (дбх оал
дуо миЫраммм звуо), са
оуиурсЫ сйлсу
здвмсйит сЫомо рЫгмзир дасссл. Взуурсмр
раиЫраимьЫзойф ьазит зиаитм, в
оуиуруо
йуурмсабузт, ьиу всралЫсмЫ «x2
» рул
су рЫабмзуваит уйиЫр здвмга рЫгмзира
x са
i
разрхдув вураву.
→ зсаьЫсмЫ ароиасгЫсза йгба (дбх
оалдуо миЫраммм звуо).
ДабЫЫ раззруирмр рудйбт, оуиурсо рЫабм
зйЫи оалдйф мз
Модуль rotator.v
оауоа рудйбх, уарарЫирс, влудссЫ м
лудссЫ уурис:




ГазсаьЫсмЫ влудув м
вслудув рудйбх, дй
раЫр, уусхису (вмдсу са
зирйоийрсуо злЫрЫ
уруЫоиа), а
уарарЫирс бсбм уумзасс всоЫ,
рудйбЫ
ИЫуЫрт даваоиЫ саумоЫр кйсоммф, оуиу
бс здвмгаба рЫгмзир са
задассуЫ оубмьЫ
зиву разрхдув вураву. ерм уиур сЫ бйдЫр урм
смраит ву
всмрасмЫ зсаоувсо, зиаромо бми
ьмзба (зсаоувсо бми сЫ дублЫс здвмгаитзх):





МдЫзт
→ мрх кйсоммм, оуиурах вузвра
паЫи 13
разрхдсуЫ ьмзбу ([width_data:0]).
→ аргйрЫсис кйсоммм, уЫрвсо мз
оуиу
рсл уЫрЫдаЫи рЫгмзир, а
→ ьмзбу, са
оу
иуруЫ уиуи рЫгмзир сЫублудмру здвмсйит.
Вуи м
дубрабмзт рс ду
заругу хдра
CORDIC-абгурмира. ВойуЫ з
йлЫ раззруирЫс
ссрм кйсоммхрм ароиасгЫсза м
здвмга сар
узиабузт рЫабмзуваит иубтоу ууЫраммм здвм
га м
збулЫсмх/всьмиасмх:
[width_data:0] Xd, Yd;
Yd = Delta(y_i,iteration);
always






x_1 <= x_i + Yd;




x_1 <= x_i – Yd;



МдЫзт змгсабс
м
зудЫрлаи рЫзйбтиаи
здвмга влудссл змгсабув
м
са
оубмьЫ
зиву разрхдув
. еузбЫ крусиа иаоиувугу змг
урувудмизх урувЫроа зсаоа йгба
ьиу уурЫдЫбхЫи сауравбЫсмЫ уувуруиа вЫоиу
ра. ГЫи сЫублудмрузим разбмраит уиуи урумЫзз
бубЫЫ уудрубсу, зиуми бмот сауурсмит, ьиу ус
рЫабмзйЫи всьмзбЫсмх, урмвЫдЫсссЫ в
раиЫра
имьЫзоуо ьазим зиаитм. ермвЫдЫр мл зсува:
ВсьмзбЫсссЫ зсаьЫсмх
рЫдаЫр са
вслуд рудйбх
→ дбх збЫдйфпЫо
ИаолЫ, уараббЫбтсу з
йгбур м
рм, сЫублудмру уЫрЫдаваит уу
миЫраммхр
ьЫивЫрит змгсаба: дбх уузбЫдсЫгу рудйбх са
оЫгу уруЫоиа
always
Модуль select_quarter.v
Гауурсмр, ьиу уиуи рудйбт урЫдсазса
ьЫс дбх адЫоваисугу урЫдзиавбЫсмх дасссл
МАе. Га
вслудЫ рудйбх
X м
Y мз
рЫсхфи звум зсаьЫсмх уи
ду
рЫ урЫдзиавбхфи зубуо рудйбт змсйза
(рмз.
9). Дмауазус влудссл дасссл МАе ру
лЫи урмсмраит зсаьЫсмх 0–4096.
Га рмз.
вмдсу: дбх иугу ьиубс уубйьмит
уубсумЫсссо змсйз дбх всдаьм са
МАе,
уЫрвсЫ двЫ ьЫивЫрим о
влудсурй змгсабй
x_i
сйлсу урмбавбхит зсаьЫсмЫ 2048 (зЫрЫдмса
дмауазуса МАе), а
уузбЫдсмЫ 3
ф м
ф
→ уисмраит зсаьЫсмЫ 2048.
Раззруирмр оауой рудйбх, влудссЫ м
лудссЫ змгсабс:
[12:0] Yo,
ДабЫЫ рЫабмзйЫр иу, ьиу ууоазасу са
wire [12:0] Yq1, Yq2;
assign Yq1 = Yi+13'h800;
assign Yq2 = 13'h800-Yi;
МдЫзт зсаьЫсмЫ 2046
урЫдзиавбЫсу в
оЫзи
садмаиЫрмьсур вмдЫ
→ 13’h800. ДабЫЫ рЫабм
зйЫр урумЫзз, оуиурсо уу
иаоиувурй змгсабй
, в
завмзмрузим уи
ьЫивЫрим, урмзвамва
Ыи змгсабй
зсаьЫсмЫ
Yresult
→ зсаьЫсмЫ
Yq1
Yq2
[12:0] Xresult, Yresult;
always

Xresult <= 13'h0; Yresult <= 13'h0;




Yresult <= Yq1; Xresult <= Xq1;



Yresult <= Yq1; Xresult <= Xq2;



Yresult <= Yq2; Xresult <= Xq2;



Yresult <= Yq2; Xresult <= Xq1;

В заобфьЫсмЫ уудобфьмр рЫзйбтиаис
вслуд рудйбх
Yo = Yresult;
Га уиур рс заоусьмбм раззруирЫсмЫ взЫл
рудйбЫо. ИЫуЫрт уЫрЫодЫр о
зуздасмф уруЫо
иаолЫ о
рудЫбмрувасмф.
Зуздаваит HDL-уруЫои рс бйдЫр в
уйбхрсуо зрЫдЫ дбх уибадом м
змрйбмрува
смх еПИЗ → ModelSim уи
Mentor Graphics.
уубтзй всбура дассугу еД
рулсу, уурмру
уруьЫгу, дубавмит иуи каои, ьиу зрЫда уруЫо
имрувасмх FPGA-змзиЫр Quartus
II уи
Altera
Corporation саьмсах з
вЫрзмм 10.0
сЫ зудЫр
лми обаззмьЫзомо змрйбхиур. ВрЫзиу обаз
змьЫзоугу змрйбхиура в
II сЫублудм
ру мсиЫгрмруваит бмбу ModelSim AE (Altera
Edition), бмбу ModelSim ASE (Altera Starter
Edition). ВсбЫрЫр виуруо вармаси, иао оао дбх
мзуубтзувасмх уЫрвугу сЫублудмра убаисах
бммЫсзмх. БйдЫр мзуубтзуваит ModelSim-
МауйзоаЫр еД:
. ЗуздаЫр уруЫои (рмз.
10):
В уубЫ
(рмз.
10) уруумзсваЫр
мрх саоЫгу уруЫоиа: сазувЫр Ыгу Sinus10kHz,
иао оао саоа змзиЫра бйдЫи гЫсЫрмруваит зм
сйзумдабтссо змгсаб ьазиуиуо 10
о№м. В
уубЫ
йоазсваЫр рЫзиу разуубулЫ
смх уруЫоиа. Авиур звум уруЫоис разуубагаЫи
уауоЫ
, оао уравмбу, в
лЫ оаиабугЫ,
ьиу м
уруграрра, в
оуиуруо зуздаЫизх уруЫои.
еууиурй уйит о
уиурй оаиабугй уруумоЫр:
еубЫ
рЫоурЫсдйЫизх
йрубьасмф.
еузбЫ салаимх
уухвмизх збЫдйфпЫЫ
МдЫзт рс всбмраЫр уйсои
оуиурсо уузвубми дубавмит о
уруЫоий каобс
рудйбЫо, саумзасссл са
хзсоЫ уумзасмх ау
уараийрс
Verilog (урм уиур в
еурмру губувсугу рудйбх
дубавбхЫр иаолЫ збЫдйфпмЫ уйзисЫ каобс:
ГазсаьЫсмЫ уимл рудйбЫо рс раззруирЫбм
расЫЫ, урм зузиавбЫсмм зирйоийрсуо злЫрс
ИЫуЫрт дбх рудЫбмрувасмх саоЫгу уру
Ыоиа сЫублудмру зуздаит рудйбт testbench.
Взуурсмр, ьиу й
губувсугу рудйбх
удмс влуд
→ иаоиувсо, а
зса
ьми, ьиубс урувЫрмит рабуиузуузубсузит
змзиЫрс, сЫублудмру в
testbench-рудйбЫ згЫ
сЫрмруваит бмот уиуи иаоиувсо змгсаб сйл
В№м.
Дубавмр в
сао уруЫои ЫпЫ удмс рудйбт:
смзуадафпЫр рЫсф
. Дадмр мрх рудйбф

оауоа рудйбх:
Эиуи рудйбт сЫ зудЫрлми влудссл м
лудссл ууриув. ДмрЫоимвуо
задаЫр
разрЫрсузит врЫрЫсссл задЫрлЫо, сЫублу
дмрсл урм рудЫбмрувасмм. еу
йрубьасмф
зсаьЫсмЫ дмрЫоимвс
timescale
равсу 1ns/1ns.
иЫзибЫсьЫ сар сЫублудмру бйдЫи за
даваит дбмиЫбтсузит уубйуЫрмуда иаоиувуо
ьазиуис 96
В№м, равсйф 5,208
сз. еЫрвуЫ
зсаьЫсмЫ дмрЫоимвс
→ уиу Ыдм
смма врЫрЫсм, в
оуиуруо бйдйи йоазсваитзх
врЫрЫсссЫ задЫрлом в
иЫзибЫсьЫ, а

разрЫоЫсмЫ уу
врЫрЫсм. йоазав зсаьЫсмЫ
равсср 1ns/1ps, рс
зрулЫр уруумзсваит врЫрЫсссЫ задЫрлом,
мрЫфпмЫ сЫ мЫбуЫ зсаьЫсмЫ.
ИЫуЫрт уудобфьмр губувсуо рудйбт са
оЫгу уруЫоиа:




бйдЫи самурузиЫоомр:
сар сЫублудмру бмот уудаит иаоиувйф
ьазиуий 96
В№м са
иаоиувсо влуд рудйбх

forever
МдЫзт рс уузиухссу гЫсЫрмрйЫр иаоиувсо
рЫасдр з
уубйуЫрмудур 5208
уз, ьиу зууивЫи
зивйЫи ьазиуиЫ 96
В№м. Гауурсмр, ьиу ууЫра
иур forever
→ сЫ змсиЫзмрйЫрсо, уубЫзЫс иубт
оу урм рудЫбмрувасмм. ГЫи зрсзба мзуубтзу
ваит Ыгу, саурмрЫр, в
ИЫуЫрт сао уруЫои сЫублудмру зоурумбм
руваит (рмз.
Гар сйлсу зоурумбмруваит каобс уруЫо
иа мрЫссу зугбазсу мЫрарлмм
→ звЫрлй всмз:
саьмсах з
каоба вЫрлсЫгу йрувсх
test_bench.v
. ДувЫрмрзх ModelSim
уухвмвоЫрзх уосЫ салмраЫр са
. ерм йдаьсуо оурумбхммм в
уасЫбм
Transcript
дублсу уухвмитзх зуубпЫсмЫ:
# Compile of <каоб рудйбх> was successful.
ДабЫЫ сЫублудмру зауйзимит змрйбхиур:
В уухвмвоЫрзх уосЫ
13)
всбмраЫр рабуьйф бмббмуиЫой (урм зуздасмм
уруЫоиа мрх бмббмуиЫом узиавмбм уу
йруб
→ work), йоазсваЫр рудйбт вЫрлсЫгу
test_bench.v
м
салмраЫр ДО.
ерм
йдаьсуо загрйзоЫ змрйбхиура са
уухвмизх ЫпЫ удса вобадоа
. ДабЫЫ уи
орсваЫр уосу врЫрЫсссл дмаграрр:
Wave
. В
уиу уосу сар сйлсу дубавмит змгсабс
мз
уруЫоиа, оуиурсЫ рс луимр уруасабмзмру
ваит: уасЫбт
, вобадоа
, уравах осуу
оа рсом уу
To
Wave
. ерм уиур в
Wave
дуба
вхизх иубтоу иЫ змгсабс, оуиурсЫ бсбм йоазасс
рудйбЫ
. Езбм рс луимр дубавмит
взЫ змгсабс, зйпЫзивйфпмЫ в
уруЫоиЫ, иу
ИЫуЫрт узиабузт бмот зауйзимит змрйбх
ммф са
сйлсуЫ сар врЫрх. Дбх уиугу в
оус
зубм (уасЫбт
Transcript
) уруумоЫр оурасдй:
еузбЫ уиугу в
Wave
рс йвмдмр рЫ
зйбтиаи рудЫбмрувасмх змзиЫрс урудублм
Оао рулЫи зарЫимит ьмиаиЫбт, уузбЫдува
иЫбтсузит дЫозивмо, саьмсах з
оурумбмрува
смх уруЫоиа м
заоасьмвах зауйзоур змрйбх
→ урумЫзз дубгмо. Взф уий уузбЫдуваиЫбт
сузит дЫозивмо рулсу уруумзаит в
do-каобЫ.
Зуздадмр Ыгу:
File
New
Source
Do
vlog test_bench.v Sinus10kHz.v cordic.v step_control.v reset_block.v
vsim work.test_bench
add wave -r /*
В уЫрвуо зируоЫ оурасдуо
vlog м
зум
зоур рудйбЫо рс оурумбмрйЫр сао уруЫои.
виуруо зируоЫ оурасдуо
vsim рс загрйла
Ыр змрйбхиур. В
ирЫитЫ зируоЫ рс уиорсваЫр
Wave
м
дубавбхЫр ийда взЫ зйпЫзивйф
пмЫ в
саоЫр уруЫоиЫ змгсабс. В
уузбЫдсЫо
зируоЫ рс зауйзоаЫр змрйбхиур са
ЗулрасхЫр сао do-каоб ууд мрЫсЫр, са
урмрЫр, «
make.do
» в
дмрЫоиурмф уруЫоиа.
ИЫуЫрт, ьиубс зоурумбмруваит м
бмруваит сао уруЫои, дузиаиуьсу в
оусзубм
сабраит збЫдйфпЫЫ:
м салаит
. В
оусзубм рулсу бйдЫи уру
збЫдмит мзуубсЫсмЫ взЫл оурасд, уруумзас
ссл в
do-каобЫ. В
уухвмвоЫрзх уосЫ
Wave
рс
В уиур уосЫ бйдйи урЫдзиавбЫсс взЫ змгса
бс, урмзйизивйфпмЫ в
саоЫр уруЫоиЫ. Эиу
взЫ луруоу, иубтоу уирЫимр уарй рмсйзув:
Змгсабс разомдасс оао уууабу, м
урмдЫизх
урубмзисваит взЫ уосу
Wave
, ьиубс саоим
ИаомЫ змгсабс, оао, саурмрЫр, x_i, y_i
рудйбх
, бйьоЫ вузурмсмрафи
асабугувуо куррЫ, а
вмдЫ ммкр.
Гу рулсу уосу
Wave
укуррмит дублсср
убразур: иао, ьиубс уиубралабмзт иубтоу
сйлссЫ сар змгсабс м
йдубсуо дбх саз
куррЫ. Взх уиа мскурраммх уруумзсваЫи
зх взЫ в
лЫ do-каобЫ. ОусЫьсу, урмдЫизх
ууираимит врЫрх са
укуррбЫсмЫ уоса
Wave
заиу з
оразмву укуррбЫсссрм врЫрЫс
ссрм дмаграррарм йдубсЫЫ уибалмваит оуд
уруЫоиа, да м
урузиу оуркурисЫЫ вузурмсм
ИЫуЫрт саьсЫр дуумзсваит мрЫфпмозх
саз каоб
. ДкуррбЫсмЫ уоса
Wave
сйлсу уумзсваит уузбЫ оурасдс зауйзоа зм
рйбхиура
→ vsim work.test_bench, ду
оурас
дс run 200
us м, зару зубуо, врЫзиу оурасдс
дубавбЫсмх взЫл змгсабув
→ add wave -r/*.
add wave
add wave

Ийи рс йоазсваЫр, з
оаоугу рудйбх м
оуо оусорЫису змгсаб сЫублудмру дуба
вмит в
уосу уибадом
Wave
. Оурасдс
add
рулсу умзаит удсуо зируоуо, су
ьазиу
усм уубйьафизх збмооур дбмсссрм, в
омл збйьахл урмрЫсхфи зсао «\»: ус уузвубх
Ыи уЫрЫсЫзим ьазит оурасдс са
збЫдйфпйф
add wave -noupdate -group Top_Module_Sinus10kHz -color Cyan
-format Logic \

add wave -noupdate -group Top_Module_Sinus10kHz -color Cyan
-format Analog-Step \

-height 150 -max 4092.0 -radix unsigned /test_bench/Sinus10kHz_
add wave -noupdate -group Top_Module_Sinus10kHz -color {Steel
Blue} -format Logic \

add wave -noupdate -group Top_Module_Sinus10kHz -color {Steel
Blue} -format Analog-Step \

-height 150 -max 4092.0 -radix unsigned /test_bench/Sinus10kHz_
add wave -noupdate -group Top_Module_Sinus10kHz -color Green
-format Analog-Step \

-height 50 -max 3216.0 -radix unsigned /test_bench/Sinus10kHz_
add wave -noupdate -group Top_Module_Sinus10kHz -color Green
-format Logic \

В всоЫ саумзассур оудЫ рс дубавбхЫр
уибадуьсуЫ уосу змгсабс иаоимрувасмх
убумл МАе
→ idclk, qdclk. еурмру уиугу рс
дубавбхЫр змгсабс
I м
→ уизьЫис овадра
ийрсугу змгсаба уимл
лЫ МАе, а
иаолЫ Angle.
ермьЫр уиубралаитзх в
уосЫ уим змгсабс
бйдйи в
асабугувуо куррЫ (
-format
Analog-
). МадаЫр всзуий уиубралЫсмх змгсаба
150) м
дмауазус урмсмраЫрсл зса
ьЫсмо змгсаба (
4092). МарЫимр, ьиу ду
бавбЫсссЫ змгсабс разораоЫсс в
разссЫ
мвЫиа (
Cyan). Эим змгсабс убрЫдмсЫсс
грйууй Top_Module_Sinus10kHz.
МабЫгах вуЫрЫд, ууоалЫр ьмиаиЫбф, оао
бйдЫи всгбхдЫит уосу
Wave
(рмз.
16) уузбЫ
зауйзоа do-каоба, зудЫрлапЫгу оурасдс, оу
иурсЫ рс иубтоу ьиу раззруирЫбм.
Иао оао CORDIC-абгурмир рЫабмзувас
вмдЫ оусвЫоЫра, урм змрйбхммм сар мсиЫ
рЫзсу бсбу
бс вмдЫит, оао мзрЫсхфизх зса
X м
Y уузбЫ оалдугу звЫса оусвЫоЫра
(уузбЫ оалдугу рудйбх
ермвЫдЫр оурасдс дубавбЫсмх змгсабув
Wave
дбх уЫрвугу звЫса оусвЫоЫра:
add wave -noupdate -expand -group Cordic -group Rotator0 -color
Green -format Logic \
add wave -noupdate -expand -group Cordic -group Rotator0 -color
Green -format Analog-Step \
-height 50 -max 2048.0 {/test_bench/Sinus10kHz_user/cordic_user/
add wave -noupdate -expand -group Cordic -group Rotator0 -color
Green -format Logic \
add wave -noupdate -expand -group Cordic -group Rotator0 -color
Green -format Logic \
add wave -noupdate -expand -group Cordic -group Rotator0 -color
Green -format Analog-Step \
-height 50 -max 2048.0 {/test_bench/Sinus10kHz_user/cordic_user/
add wave -noupdate -expand -group Cordic -group Rotator0 -color
Green -format Logic \
add wave -noupdate -expand -group Cordic -group Rotator0 -color
Green -format Logic \
МдЫзт рс дубавмбм взЫ мсиЫрЫзйфпмЫ саз
змгсабс рудйбх
: влудссЫ змгсабс
x_i,
y_i, z_i; вслудссЫ змгсабс
x_o, y_o, z_o; вслуд
сйф ьЫивЫрит. В
асабугувуо куррЫ рс урЫдзиа
вмбм иубтоу два змгсаба
–expand –group Cordic –group
зуздаЫи грйууй Cordic м
ЫпЫ удсй вбу
лЫссйф грйууй Rotator0. Вс сЫ бйдЫр урм
вудмит дЫозивмх уу
дубавбЫсмф в
Wave
взЫл узиабтссл звЫстЫв оусвЫоЫра (Rotator1–
Rotator15), иао оао уиу удсуубразсуЫ засхимЫ.
Га рмз.
ууоазаса уасЫбт з
мрЫсарм
змгсабув уоса
Wave
уузбЫ дубавбЫсмх взЫл
узиабтссл звЫстЫв оусвЫоЫра.
В заобфьЫсмЫ рулсу дубавмит змгсабс
рудйбх
. Иао оао урм дубавбЫ
смм уимл змгсабув оурасдс
add wave
бйдйи
мрЫит удмсаоувсЫ аирмбйис, убрЫдмсмр уим
змгсабс в
→ з
мзуубтзувасмЫр взЫгу
удсуо оурасдс
add wave
{Select Quarter}
Green
Logic \
/test_bench/Sinus10kHz_user/quarter_user/Yo \
Га рмз.
урмвЫдЫсу уосу
Wave
, в
оуиурур
развЫрсйис два звЫса оусвЫоЫра
→ Rotator3
Га рмз.
уиьЫибмву вмдсу, оао уу
лудй
урудвмлЫсмх змгсаба мз
удсугу звЫса оус
вЫоЫра в
дрйгуо взЫ иуьсЫЫ урурмзувсваЫизх
рудйбт змсйзумдс.
Ииао, ьиубс йбЫдмитзх в
иур, ьиу рс згЫ
сЫрмрувабм змсйзумдй з
ьазиуиуо мрЫссу
о№м, дубавмр в
сао do-каоб збЫдйфпйф
WaveRestoreCursors {{Cursor 1} {25234023 ps} 0} {{Cursor 2}
МдЫзт рс дубавмбм два ойрзура, оуиурсЫ
разуубагафизх са
раззиухсмм 100
роз дрйг
дрйга, а
уиу м
Ызит уЫрмуд змсйзумдс з
о№м (рмз.
ДаваоиЫ иаолЫ йбЫдмрзх в
иур, ьиу рс ду
зимгбм урЫдЫбтсуо иуьсузим всьмзбЫсмо.
Дбх уиугу збйлми ууоазаиЫбт вслудсугу зса
→ узиаиуьссо йгуб (рмз.
МдЫзт разорсиу уузбЫдсЫЫ, 15
Ы звЫсу оус
вЫоЫра. Вулсу зарЫимит, ьиу зсаьЫсмЫ казс
влудЫ звЫса (z_i) вартмрйЫизх уи
ду
Га
вслудЫ
лЫ (z_o) уиа уугрЫосузит йуаба
ду
Думзасссо уруЫои авиур «урЫиву
рмб в
лмзст», мзуубтзйх еПИЗ уи
Altera
Corporation зЫрЫозива Cyclone EP1C6T144I7.
ВрЫрЫссуо асабмзаиур Quartus
II 10.1
смб раозмрабтсйф ьазиуий, урм оуиуруо зм
зиЫра бйдЫи рабуиаит бЫз збуЫв, в
В№м.
кмииЫр разрЫзимб уруЫои са
бугмьЫзомл
убЫрЫсиал (LE), ьиу зузиавбхЫи 18% уи
убпЫ
гу разрЫра ормзиабба. Из
уиугу оубмьЫзива
LE зару хдру CORDIC-абгурмира, а
мрЫссу
рудйбт
Авиур сЫ рЫоурЫсдйЫи мзуубтзуваит вЫзт
дмауазус МАе уубсузитф, иао оао МАе, «са
Ывомзт», рулЫи уудсхит йрувЫст уаразмиссл
зузиавбхфпмл виурузиЫуЫсссл гаррусмо са
оЫгу змгсаба. Гу
Ызбм рс йрЫстомр зсаьЫ
смЫ оууккмммЫсиа дЫкурраммм Koef_Mash,
рс йрЫстомр м
арубмийдй вслудсуо змсй
зумдс, а
зсаьми, сЫ дузимгсЫр раозмрабтсу
гу зсаьЫсмх 12
разрхдсугу ьмзба.
ермрЫсмв дасссо абгурмир гЫсЫраммм
змсйза, разрабуиьмо дубавми звуЫо змзиЫрЫ
гмбоузим. ВЫдт мзрЫсхх в
урумЫззЫ рабуис
иаомЫ уарарЫирс змзиЫрс, оао каоиур ьазиу
ис (Freq_Step) м
оууккмммЫси дЫкурраммм
(Koef_Mash), рс рулЫр уубйьаит разсуЫ зса
ьЫсмЫ вслудсуо ьазиуис м
арубмийдс змг
саба зууивЫизивЫссу. Дбх уиугу сЫублудмру
Freq_Step м
Koef_Mash рЫабмзуваит сЫ в
вмдЫ
оусзиаси, а
влудссрм рЫгмзирарм дасссл,
оуиурсЫ бйдйи запЫбомваитзх уу
оаоурй-

1.
В., Лаьйрув
В. Абгурмирс CORDIC.
ЗуврЫрЫссуЫ зузиухсмЫ м
уЫрзуЫоимвс. В.: кмз-
раибми. 2004.
2.
IEEE Standart
Verilog Hardware Description
Mentor Graphics. ModelSim Tutorial. May 2008.
4.
еубхоув
VHDL м
Verilog в
рувасмм ммкрувуо аууараийрс. В.: ЗДПДГ-

Приложенные файлы

  • pdf 7065773
    Размер файла: 762 kB Загрузок: 0

Добавить комментарий