TNJ-014:DACの妙技「MIX MODE」をデジタル信号処理の理論的視点から考える
2015年10月2日公開
はじめに
アナログ・デバイセズではナイキスト周波数を超えたところでもD/Aコンバータ(以下DAC)が十分な出力を得られるようにするために、図1のような一般的な出力のかたちではなく、図2のようにDAC出力をスイッチ(変調)する「MIX MODE」という機能を持つ製品があります。これはいろいろな用途で使える機能と思いますが、このときの出力レベルは図3のような形になります。MIX MODEに対応している製品は以下のものがあります(一例)。
通常であればDAC出力は、図3のように1.0 FS(サンプル周波数fs [Hz])で出力レベルがゼロとなるsinc関数になります。ところがこのMIX MODEでは、なんと!そこで最大になります…。この技術ノートでは、このカーブがどんな成り立ちで出来上がっているか、数式的にどのように表されるのかを考えてみます。



図3. MIX MODEによる出力レベルのようす(AD9739)
通常のDAC出力レベルはsinc関数上に乗っていると言われるがホントにそうなるの?
まずは図1のような一般的なDAC出力での、出力レベル対周波数特性がどうなるかを考えてみました。そういう私も、最初は各種文献での説明や、社内の技術資料などでも見つけることができず、「ホントにそうなるの?」という答えが出ず、だいぶ自問自答していたものです。実は図4から図5へのアイディアに考えが行きつくまでに、かなり時間がかかりました…。何年もと言ってもいいかもしれません。
DAC出力レベルは周波数軸でsinc関数上に乗る
以降にも詳しく示していきますが、DACは出力周波数がサンプリング周波数fs [Hz]に近くなるにしたがい、出力レベルが小さくなります。この出力レベルはsinc関数上に乗ると言われています。
正弦波で考える出力信号s(t)は、
となりsinc関数で出力レベルが低減していきます。ここでAは本来DACとして出したい出力レベル、fは周波数、tは時間です。図3を見ても0.25・fsで-1dB程度、0.5・fsでは-4dB程度になることがわかります。まあ実際のところは0.5・fs前後では折り返しのスペクトルも出てきますので、それをフィルタリングする必要性があるなど、使いづらいこともあろうかと思いますが…。

図4. DAC出力をそのまま表してみたようす
(一般的・常識的な考え方)

図5. DAC出力での連続矩形波のそれぞれは1サンプルごとの
孤立矩形波として分割して考えることができる

図6. DAC出力レベルはsinc関数(4fsまで表示)。
0.5fsで出力すると-4dB程度までレベルが減衰する
DAC出力レベルはなぜsinc関数に乗るのか
DAC出力を周波数軸でみると、その出力レベルの変動が式(1)のようにsinc関数に乗ることは、どの文献でも書かれています。しかしsinc関数としてのスペクトルは「孤立矩形パルスのフーリエ変換(周波数軸表現)」です…。DACのように連続して出力する矩形波形(図1や図2)は「ホントに孤立波でのsinc関数の考え方を当てはめてしまっていいの?当てはめることができるの?」とずっと思っていました。
また理論的な本に「パワー・スペクトルは、その連続信号の自己相関をとった波形をフーリエ変換したもの」という表現があり、矩形の連続波の自己相関は孤立三角波になります。ずっとこの理論的説明との関係がイメージできませんでした(実は計算すれば、これもつじつまがあっていた)。
孤立矩形波が連続して到来していると考えればいいんだ!
この「連続矩形波として発生するDAC出力のスペクトルは、孤立矩形パルスのsinc関数となぜ同じレベルになるのか?」については、図5のように、DAC出力での連続矩形波のそれぞれは、実際は1サンプルごとの孤立矩形波として分割でき、それが1/fs [s]の時間ずつとして分離しているものが(孤立矩形波のパルスとして)連続的に到来している、と考えればよいことに気が付きました。
たとえばそれが1Ωの抵抗に加わっているのであれば、その抵抗を熱するスペクトルとして考えてみれば、(DACで得られるもともとの考えである)連続矩形波であっても、(ここで考える連続矩形波を孤立矩形波として個別に分割したという考えである)孤立矩形パルスの集合であっても、それぞれ同じなわけです。
そうすれば周波数スペクトル(スペアナなどで見てみると言うこと)は単純に波形ごとの足し算だとして見えるわけですから、結局は図6のsinc関数が順々に足し合された形になります。つまり周波数スペクトル上では、sinc関数の形状は「維持される」ということです。
この気づきに何年かかったことやら…。この気づきがあってこそ、MIX MODEの波形がどう説明できるか「一石二鳥」が得られることになりました。
余談…「パワー・スペクトル」ってやっぱり電力の事ではないの?
ところで余談ですが、この「パワー・スペクトル」というのを「これは電力のことではなく、信号を二乗したという意味である」という記述を書籍などで見ることがあります。英語のPowerは、電気では(ご存じのように)「電力」という意味でありますが、数学的には「冪(べき)としてn乗する」という意味があります。「電力の事ではない」という記述は確かにそうかもしれませんが、P = V2 / RでR = 1Ωとすれば(これは回路理論での検討でもよくやること)、結局は電力のことを言っているのではないか?と常々私は思っています。英語がネイティブの学者さん(専門家)に聞いたわけではないので、真偽のほどは不明ですが…。
MIX MODEでチップを動作させるのは簡単
MIX MODEとしてDAC ICを動作させるためには、DACに与えるデータ(DACコード)に何か条件を被せる必要はありません。モードをノーマル・モードからMIX MODEのモードに切り替えるだけです。入力は同じでかまいませんが、それが図2のように、+1/-1に1/fsの「半分の時間」で切り替わる(変調される)ようになります。
そうすることで、ナイキスト周波数より上のところ(もしくはfsに近いところ)の成分を、BPFを通して取り出して、それを増幅して信号として活用することができます。fsに近いところでも高いレベルが維持できますから、後段の動作効率を高くできます。アプリケーションはデジタル変調用途が主だと思いますが、いろいろ活用できそうです。
AD9739はDOCSISという仕様に最適化されている
AD9739はCMTS (Cable Modem Termination System) のDOCSIS (Data Over Cable Service Interface Specifications)用に最適化されており、これらのベースバンド系の処理系も内蔵されています(ディスエーブルにしてバイパスも可能)。AD9789はもっと汎用で、なんでも応用できるといえるでしょう。
このCMTS, DOCSISというのは、あいにく弊社「半導体用語集」にも掲載されていない用語ですが、ケーブル・モデム終端装置に関する仕様です。
周波数スペクトルを実際に考える
DAC出力は孤立矩形波で表現できることに気がついたわけですが、それがsinc関数と実際にどのように関係しているかを示してみます。図7をご覧ください。事業部の担当者を探して「なんでこうなるの?」と質問して聞いてもいいのでしょうが、やはり(気合で!)自力でやってみることにしました。
図7の左上はDACに入力される(と仮定する)インパルス信号Aδ(t)です。tは時間[s]、Aは信号の大きさです(DA変換の値と言える)。これに同右上のDACの矩形テンプレート(長さTs = 1/fs)が「畳み込み(Convolution)」されます。このようにDAC出力というのは、デジタル信号処理で得られたインパルス信号に対して、「1サンプル相当の矩形テンプレートを畳み込み」するものです。

図7. DAC出力の時間信号波形とスペクトラムのようす
時間軸の畳み込みは周波数軸の掛け算
このようすを周波数上で表すと、図7左下のように入力インパルス信号は大きさ1の一定の周波数レスポンスです。これに同図右下のDACの矩形テンプレートの周波数レスポンス(フーリエ変換した結果)が周波数軸上で「掛け算」されることになります。時間軸での畳み込みは周波数軸での掛け算に相当します。
周波数領域では単純に「掛け算」ですし、インパルスが周波数領域でδω(f) = 1 (const) になっていますから、「1×」で掛けても掛けなくても一緒です。つまりDAC出力の周波数特性としては、結局sinc関数となっていることになります。
なお、sinc関数自体は電圧量や電流量に相当し、本来は電力で考える必要がありますから、20logでdBとします。その結果、図8のsinc関数のシミュレーション結果とAD9739のデータシートの波形の形状(図3のNORMAL MODEとして示したもの)は目出度(めでた)く同じになります。
ここまでくれば「MIX MODEのテンプレートがどうなるか?どういう周波数スペクトルか?」を考えればいいだけで、あとは簡単(?)です。

図8. sinc関数のようすを図3に合わせて
シミュレーションしてみる。図3とぴったり同じ!
アナログ・エンジニアからの貴重なコメント
ここで非常に優秀なエンジニアの方からコメントをいただきました。その方のコメントを引用します。
『この話は、重ね合わせの定理が成り立つという事ですね。私の場合はDAC出力の話題ではないのですが、A/D変換において、以下のような離散信号の式を見ることがあります。
ここでk, nはサンプル番号に相当する整数で、Tはサンプリング周期です。これが良くわかりませんでした。暗記してしまえば簡単なのですが、式の意味するところを理解するため、考察を重ねました。
この式は「畳み込み」であるわけですが、たくさんの孤立パルスが集合したものとデルタ関数(δ(t))を畳み込んだものが、サンプリングにより得られた信号だということです。でもこの式の表現はおかしくないか?と思ったわけです。正しくは、
ここでX(t, n)はサンプリングされたサンプル値で、x(t)はサンプリングされる連続時間信号です。掛け算ではないかと、こうではないかと…』
『X(t, n)がX(n)でないことに注目してください。正しい数学上の表現では、サンプリングという行為は連続信号の関数です。つまり離散信号は連続信号の一種にすぎないのです。なぜならデルタ関数が連続信号の関数だからです。
そしてこの式から、時間連続で考えると、サンプル点の間には、ゼロが連続して存在しているようすを見ることができます。
これを「サンプル値」として考えなおせばX(t)がX(n)であるわけですが。意外とこの事(連続時間で考えるべきこと)が本に書かれていません。離散信号も連続信号のひとつであるからこそ、フーリエ変換等の連続時間関数の算術が離散信号でも取り扱えるものだと思います』
このコメントはおっしゃるとおり!
この方が最初におっしゃる「重ね合わせの定理が成り立つ」…その定理なのだと、私もそこに辿りつきました。またこの方がご指摘の式、
については、「この式自体」は離散信号のデルタ関数との畳み込みです。しかしこの方がおっしゃるように「たしかに変では?」と思わせるものです。このことをステップを追って考えてみましょう。
サンプリングは「畳み込み」と本には書いてあるけれど?
畳み込みは2つの関数を逆方向から交らわせるように計算(掛け算)し、累積します。デルタ関数は離散信号の場合でδ(0) = 1、連続時間の場合はδ(0) = ∞、それ以外はゼロというものです。といっても離散信号同士だとデルタ関数との畳み込みはあまり意味がありません。
ここからがトリックなのですが、とある本では連続時間系として考えたサンプリングは、
という感じで、上記の式(2)を連続時間としての畳み込みで表現しています。ここでf(t)は連続時間t [s]における連続信号、Tsはサンプリング周期[s]です。どうやらこれが間違いのようです。
「もっと簡潔に言ってくれれば」と思う壱技術者
(実は私は)難しそうな本に書いてある「デルタ関数との畳み込みで連続信号を離散信号としてサンプリングする」といったような回りくどい説明は好きではありません(また以降に示すように実際は、それ自体の考え方自体に問題があります)。
アカデミックな分野の方々には「コイツわかってねーな」と言われそうですが、実際にはあまり意味の無い表現ではないか、またそれ以降は結局z領域でデジタル信号処理を延々表現していくだけだし、と思ったりしています。
アナログ・デバイセズの資料では
ところがこの話は、実際は式(2)のようにA/D変換のサンプリングというのは畳み込みではなく、式(3)のように「時間軸では連続信号f(t)とデルタ関数δ(t)との掛け算」なのでありました!たとえばアナログ・デバイセズのアプリケーション・ノート
AN-756, Sampled Systems and the Effects of Clock Phase Noise and Jitter
にもp. 2に以下の記載があります。
“While the sampling process can be considered a multiplication in time and convolution in the frequency domain,”
(convolutionは畳み込みの意)アナログ・デバイセズの他の技術資料でも同じ説明を見た記憶がありますが、どこにあったかは見つけることができませんでした。
「A/Dサンプリングは時間軸の掛け算」である事実を背理法的に説明してみる
「A/Dサンプリングは、時間軸では連続信号f(t)とデルタ関数δ(t)との掛け算」であることを背理法的に説明してみたいと思います。もし「時間軸では畳み込み」だとして考えてみると「周波数軸では一定繰り返しデルタ関数との掛け算」になります。
サンプリング動作として表される繰り返し周期Ts [s]のデルタ関数は、ご存じのように図9 (a)のように周波数軸では1/Ts [Hz]ごとの繰り返し輝線スペクトルδω(f - N/Ts)となります。もしここに同図 (b)のようにサンプリングされる実時間連続信号がs(f)という周波数スペクトルを持っていたとすると、これを周波数軸上で一定繰り返しのデルタ関数と掛け算したスペクトル[同図(c)]は意味がないこと(つまり「時間軸ではデルタ関数との畳み込み」では無いこと)は簡単にご理解いただけると思います。これで背理法的な説明がつきました。

これだと正しい信号スペクトルが得られない
正しい形で得られるスペクトルとして説明してみる
一方であらためて「時間軸では連続信号f(t)とデルタ関数δ(t)との掛け算」ということを「周波数軸では繰り返しデルタ関数との畳み込み」として作図してみると、図10のようになります。これを見てみると、繰り返しデルタ関数に相当する、繰り返し輝線スペクトルδ(f - N/Ts)のそれぞれのNにおいて、その輝線を中心として実時間連続信号s(t)の周波数スペクトルs(f)が「よく教科書で見る形で」現れていることがわかります。さきに背理法的に説明しましたが、ここでもそれが理解できるのではないでしょうか。

正しいかたちで得られるものとして説明してみる。正しい信号スペクトルが得られる
いよいよ!MIX MODEでの周波数スペクトルはどうなる
さて話題を本題に戻してみましょう。「D/A変換は時間軸では連続時間信号f(t)とテンプレート波形との畳み込み」そして「周波数軸では周波数スペクトルs(f)とテンプレート波形との掛け算」だということを示してきました。
これによりDAC出力を「矩形パルスのテンプレート」として考えてきました(図11に再掲)。MIX MODEは図11の矩形パルスの幅が、図12のように1/2になった信号(矩形テンプレート)がふたつ、それも1/4だけ時間オフセットし、そして極性が±となる、というものの合成だといえます。
つまり幅0.5、極性が±の矩形パルスにフーリエ変換の時間推移則をそれぞれあてはめて、足し算すればいいのですね!答えが合うといいです…。ホントにドキドキしてきました!(笑)。

図11. DACの1/fsテンプレート波形とフーリエ変換したもの

図12. MIX MODEの1/fsテンプレート波形
正しい形で得られるスペクトルとして説明してみる
最初に数式で計算してみました。この数式ベースでの思考結果は、この技術ノート後半に添付してある資料の第1節にまとめてみました。ぜひこちらをご覧ください。
この資料の式(7)で得られた結果を以下に示します。これは電圧値に相当しますので、これを20logを取って電力量としてdBに変換します。
この式(5)を用いたシミュレーション結果をいよいよ図13に示します。AD9739のデータシートの図(図3で示したもの)のスペクトルがそのまま、正しく得られていることがわかりました(よかった…)!

この式(5)をベースとして考えていただければ、目的の周波数でMIX MODEで動かしたときに、どのくらいの出力が得られるかが厳密に判ります。この式(5)と最初にご紹介したMIX MODEが使える製品をご活用いただき、よりよい製品を市場に送り出していただけることを願っております。
別のアナログ・エンジニアからの貴重なコメント(ラプラス変換でも計算できる)
なんとこれで本稿が終わりのような、エンド・ロールのようなカキクチでしたが、まだ続きます(汗)。
他の方からもこんなコメントをいただきました。『Super Nyquist DAC Sinc Roll-offについては、以下のように、Zero-order Hold(ゼロ次ホールド)[1]に関するラプラス変換で計算可能ですよ』
ラプラス変換の推移則でテンプレート波形を考える
『最初にラプラス変換での推移則を示しておきます(これはフーリエ変換での推移側とほぼ同じものです)。
これは波形f(t)が時間がt1だけ遅延したもののラプラス変換は、f(t)をラプラス変換したものに、e^(-t_1 s)を掛けたのになるということです。U(t)はユニット・ステップ関数(t < 0 でゼロ、t ≧0で1)で、推移側で時間をt1だけずらしたときにt1以前の時間はゼロになる必要がある、ということを示しています。
さてここでf(t)自体はユニット・ステップ関数U(t)(t < 0 でゼロ、t ≧0で1)だとすると、それをラプラス変換したものは1/sになります。式(6)中のU(t)は有っても無くても同じになります』

図14. ラプラス変換で考える通常のDACにおけるテンプレート(Zero-order Hold, ゼロ次ホールド)
まずは通常のD/A変換プロセスとして計算する
『通常のD/A変換プロセスとして計算するには、図14のような信号①~④が重ねあわされたものをZero-order Holdとして考えます。ここでそれぞれの信号はユニット・ステップ関数U(t)です。
①と②でTs/2の前半の波を表し、③と④でTs/2の後半の波を表します。それを重ね合わせた結果として、通常のD/A変換プロセスに相当する長さTs [s]のテンプレート(Zero-order Hold, ゼロ次ホールド)ができることになります。
実際には、①~④を足し合せて計算していきます。そうすると、
となります(これ以降の導出をこの技術ノート後半に添付してある資料の第2-1節にまとめてみました)。
この結果(添付資料の式(11)でも得られたもの)を以下に示します。
ここではTs = 1に規格化しています。式(5)と同じことも分かります。これは電圧の絶対値に相当しますので、これを20logを取ってdBに変換します。その結果として図8のスペクトルが得られます』
次にMIX MODEでの変換プロセスとして計算する
『MIX MODEのD/A変換プロセスとして計算するには、図14を少し変えた図15の①~④を足し合せて計算していきます。

図15. ラプラス変換で考えるMIX MODEにおけるテンプレート(Zero-order Hold, ゼロ次ホールド)
そうすると式(11)の3項目と4項目の符号が逆になり、
となります(これもこの技術ノート後半に添付してある資料の第2-2節にまとめてみました)。
この結果(添付資料の式(14)で得られたもの)を以下に示します。これは電圧の絶対値に相当しますので、これを20logを取ってdBに変換します。
DAC出力の波形は、時間領域においては「時間離散量としてD/A変換(再構成)されるアナログ信号量」と「Zero-order Hold(ゼロ次ホールド)のレスポンス」との畳み込みとみなすことができます。
従ってその周波数特性は「出力で再構成されるべきアナログ信号自体の周波数特性」と「Zero-order Holdの周波数特性」との積になります。
前者(再構成されるアナログ信号)は、サンプリング周波数(の整数倍)の周りにイメージが繰り返され、後者(Zero-order Holdの周波数特性)は孤立波から得られるsinc関数ですから、この結果として図13のスペクトルが得られます』
ゼロ次ホールド!?初めて知った!
なるほど…。この人も非常に優秀な方でいらっしゃいます。私はここで「Zero-order Hold」(ゼロ次ホールド)という用語を初めて知ったのでした。式を見ていくと、ユニット・ステップ関数を、ラプラス変換の推移則で足し算(重ね合わせ)していくものと理解できます。
話は違うが「スーパー・ナイキスト動作」
ちょっとMIX MODEとは話が違いますが、MIX MODEを使わずとも、ナイキスト周波数より上の周波数の信号を出力する目的の「スーパー・ナイキスト動作」というものがアナログ・デバイセズのDACやDDSで用意されています。以下はそのアプリケーション・ノートの一例です。
Ken Gentil; AN-939 高い周波数のRF出力信号が得られるAD9912のスーパー・ナイキスト動作, Analog Devies
ここで紹介されているAD9912というDDS ICはMIX MODEで動作するものではありませんが、このようにナイキスト周波数を超えて、DDSの信号を活用することもできるわけです。
しかしMIX MODEでの実際のスペクトルは?
MIX MODEではfsの周波数で+1/-1が繰り返し(チョッピング)ます。fsが2倍にアップすると考えることができるわけです。fs = 2.4GHzであれば、fsm = 4.8GHz相当で動作することになりますので、ナイキスト周波数も2.4GHzにアップすると考えられるわけです。
「いや…、ちょっとまてよ…」またここで疑問がもたげてくるわけです。「+1/-1が発生(チョッピング)」という点からすれば、それは信号の乗算動作です。MIX MODEの動作として、ナイキスト周波数(fsm/2 = 2.4GHzとする)に相当する周波数+1/-1の乗算(チョッピング)がDAC信号に行われれば、
という関係から「DAC出力信号の周波数はfsm/2 = 2.4GHzの周辺に±として出るのではないか?」。つまり得られる周波数は
となるのではないかと!? こんな疑問が出てきます。これは正しい?間違い?はて?
シミュレーションしてみれば分かることだが
実際の波形とスペクトルを確認するならば、MATLABやSciLab(フリー)やOctave(GNUフリー)、もしくはEXCEL(FFTもできます)などでFFTしてシミュレーションで様子を確認してみることも一つかと思いますが、やっている時間もなく…。
色々と資料を見ておりましたら、AD9739のデータシートにMIX MODE時の出力波形がありました(図16)。これを見る限り、第1ナイキストの部分も発生しているようです。きっと、これと同じ(つまり式(16)は間違い)なんでしょう…。


図16. MIX MODE時の出力波形
またもやいぶし銀のアナログ・エンジニアからの貴重なコメント
そこでまた、先の方からコメントをいただきました。
『MIX MODE時の周波数特性については、このように考えれば良いのではないでしょうか。周波数f0の正弦波を出力したい場合、NORMAL MODE であれMIX MODEであれ、出力スペクトルは周波数f0の正弦波をfsでサンプリングした離散情報と、DACのゼロ次ホールド機能に起因する、あなた(私のことです)の言う「1/fsテンプレート波形(図11と図12)」との畳み込みになるだけですよ』
『だからね、周波数軸で見てみれば、f0の正弦波のスペクトルとsinc関数Roll-offとの積になるだけなんですね。両MODEのスペクトルの相違はこのRoll-off特性の違いによって発生するだけの話ですよ』
これで「開眼」です…。結局はMIX MODEであっても「NORMAL MODEと同じ周波数配置にしかならない」ということなんですね!
でも、よく考えてみれば「あたりまえ」の話だった
でも…、よく考えればこれは、ここまでの説明を良く思い返して考え直してみれば、その…、ここまでの説明で「説明がつく」話なわけでした。さらに式(16)は結局、もともとのスペクトルと「同じ」であったわけでした(汗……式を見間違えたとも言える)!普通のDACでの考え方と同じなわけで、fs ± fbasebandに折り返しが出ていることと同義、つまり「あたりまえ」な話なんですね(汗)。
「しかしMIX MODEは離散信号処理の妙技だなあ…」とあらためて超感心(いえ、超感動です!)しました!連続時間ではこうは(当然ですが)ならないわけですしね。
こんな質問をいただきました「ナイキスト周波数ぴったりで信号出力した場合はどうなる?」
以降こんなご質問をいただきました。『AD9789のMIX MODEを利用してfs = 2.4GHzの時、出力周波数を1.2GHzで出力させる事は可能ですか?同じくfsの0.5, 1, 1.5倍の周波数に出力させる事は可能ですか?』
『単純に考えると、ちょうどナイキスト周波数なので、各ナイキスト帯域の信号が折り重なった形になってしまい、出力が出ないのではと思っています。fsを変更する等の方法が必要ですか?』
基本的なDAC「でも」対応可能
このお話は、MIX MODEでなくても、基本的な考え方でも、fsぴったり半分のレートでの信号発生は可能です。MIX MODEでは、乗算した実波形は+1/-1で切り替わるようになりますから、それから概略のスペクトルのレベルもイメージできます。
しかしそこから少し周波数がずれるだけで、fs/2の左右にスペクトルが出るようになりますから、回路としての実装には注意が必要です。
ADCでのデジタル信号処理はどう考える?
DACでのデジタル信号処理の場合は、時間軸では畳み込み、周波数軸では掛け算でしたが、「A/Dコンバータ(ADC)の場合はどうなのだ?」と実はこれまで相当長く考えていました。
この話はこの技術ノートの中でもご紹介しましたが、ADCの場合は時間軸では掛け算です…。これは別途あらためて別の技術ノートで…。
【参考文献】
[1] Zero-order hold, http://en.wikipedia.org/wiki/Zero-order_hold, Wikipe
著者について
デジタル回路(FPGAやASIC)からアナログ、高周波回路まで多...
この記事に関して
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}