UDB. Apa ini Bagian 6. Status dan Modul Kontrol



Dalam artikel sebelumnya, terjemahan dokumentasi Cypress, otomaton operasional Datapath sangat dipertimbangkan secara substantif. Secara bertahap kami beralih ke mempelajari modul UDB lainnya, khususnya, modul manajemen dan status.

Isi umum dari siklus “UDB. Apa ini? "
Bagian 1. Pendahuluan. Pld.
Bagian 2. Datapath.
Bagian 3. Datapath FIFO.
Bagian 4. Datapath ALU.
Bagian 5. Datapath. Hal-hal kecil yang bermanfaat.
Bagian 6. Modul manajemen dan status. (Artikel saat ini)
Bagian 7. Pengaturan waktu dan reset modul kontrol
Bagian 8. Mengatasi UDB

21.3.3. Modul Manajemen dan Status


Tampilan tingkat tinggi dari modul kontrol dan status ditunjukkan pada Gambar 21-28. Bit status register kontrol ditransfer untuk melacak sumber daya, memberikan program kemampuan untuk mengontrol perilaku UDB. Register status menerima data dari jalur penelusuran, sehingga program dapat memantau operasi yang dilakukan oleh UDB.


Gambar 21-28. Register manajemen dan status.

Struktur modul kontrol dan status diperlihatkan lebih detail pada Gambar 21-29. Tujuan utama unit ini adalah untuk mengoordinasikan interaksi program inti prosesor dengan pekerjaan elemen UDB internal. Namun, karena koneksi yang kuat dengan matriks jejak, blok ini dapat dikonfigurasi untuk melakukan fungsi-fungsi lain.


Gambar 21-29. Modul kontrol dan status.

Mode operasi:

  • Input Status Status garis yang keluar dari luar dapat dimasukkan dan ditangkap sebagai status, setelah itu CPU atau DMA dibaca.
  • Kontrol Output CPU atau DMA dapat menulis data ke register kontrol. Data ini akan menentukan status garis yang akan melacak sumber daya.
  • Input Paralel - untuk input data paralel Parapat.
  • Output Paralel - dari output paralel Datapath.
  • Mode Penghitung Dalam mode ini, register kontrol beroperasi sebagai penghitung penurunan 7-bit dengan periode yang dapat diprogram dan reset otomatis. Lacak input saluran dapat dikonfigurasikan untuk mengontrol hidup dan reset penghitung. Ketika mode ini diaktifkan, fungsi register kontrol tidak tersedia.
  • Mode Sinkron / Mode Sinkronisasi . Dalam mode ini, register status bertindak sebagai sinkronisasi ganda 4-bit. Ketika mode ini diaktifkan, fungsi register status tidak tersedia.

21.3.3.1 Status dan Mode Kontrol


Saat beroperasi dalam mode kontrol dan status, modul ini bertindak sebagai register status, mask override register, dan register kontrol dalam konfigurasi yang ditunjukkan pada Gambar 21-30.


Gambar 21-30. Manajemen dan status pekerjaan.

Operasi Pendaftaran Status


Setiap UDB memiliki satu register status 8-bit. Input untuk register ini berasal dari sinyal apa pun dari struktur jejak digital. Register status dapat dirusak: ia kehilangan statusnya saat tidur dan setelah bangun memiliki nilai 0x00. Setiap bit dapat diprogram secara independen untuk beroperasi dalam salah satu dari dua mode.

Tabel 21-19. Daftar Status.

STAT MDDeskripsi
0Bacaan normal. Mengembalikan nilai sinyal input saat ini.
1Menempel, bersih saat membaca. Kait level input tinggi
pada sinyal jam. Dihapus setelah register dibaca.

Fitur penting dari operasi pembersihan status register adalah bahwa hanya bit terkokang yang dibersihkan. Ini memungkinkan bit yang tersisa untuk terus menangkap status untuk menjaga kontinuitas proses.

Status membaca normal


Secara default, CPU membaca status sirkuit yang sesuai secara transparan. Mode ini dapat digunakan untuk membaca data yang terkunci di dalam UDB.

Status stick dengan jelas setelah membaca


Dalam mode ini, input register status disampel pada setiap kontrol dan siklus jam status. Jika sinyal pada jam tertentu tinggi, ditangkap dalam bit status dan tetap tinggi, terlepas dari status input selanjutnya. Ketika CPU atau DMA membaca register status, bit dihapus. Menghapus register status adalah mode independen dan terjadi bahkan ketika UDB clocking dinonaktifkan; ini didasarkan pada waktu bus dan terjadi sebagai bagian dari operasi baca.

Latch status saat membaca


Gambar 21-31 menunjukkan struktur logika pembacaan status. Register status tempel diikuti oleh kait yang mengunci data register status dan membuatnya tetap stabil selama siklus baca, terlepas dari jumlah kutu tunggu dalam operasi baca saat ini.


Gambar 21-31. Logika status membaca.

Generasi interupsi


Dalam sebagian besar fungsi, generasi interupsi terkait dengan parameter bit status. Seperti yang ditunjukkan pada Gambar 21-31, fitur ini dibangun ke dalam logika register status dalam bentuk operasi masking dan menerapkan operasi OR ke status. Hanya 7 bit yang lebih rendah dari input status yang dapat digunakan dengan generator interupsi internal. Bit yang paling signifikan (Most Significant Bit, MSB) biasanya digunakan sebagai output interupsi dan dapat diteruskan ke pengontrol interupsi menggunakan saluran tracing digital. Dalam konfigurasi ini, status bit permintaan interupsi dibaca dari bit register status tinggi.

21.3.3.2 Mengontrol Operasi Registrasi


Setiap UDB memiliki satu register kontrol 8-bit yang tersedia. Ia berfungsi sebagai register baca / tulis standar pada bus sistem, di mana output bit register ini dikendalikan oleh garis-garis struktur jejak digital.

Register kontrol dapat dirusak: ia kehilangan statusnya saat tidur dan setelah bangun memiliki nilai 0x00.

Mode Pendaftaran Manajemen


Setiap bit dapat dikonfigurasi dalam salah satu dari tiga mode. Konfigurasi ditentukan dengan menggabungkan bit dari dua register 8-bit CTL_MD1 [7: 0] dan CTL_MD0 [7: 0]. Misalnya, {CTL_MD1 [0], CTL_MD0 [0]} mengontrol mode nol bit dari register kontrol (lihat tabel 21-20).

Tabel 21-20. Kontrol Register Mode Nol Bit
CTL MDDeskripsi
00Mode Langsung
01Mode Sinkronisasi
10(disediakan)
11Mode Pulsa

Mode Registrasi Kontrol Langsung


Secara default, mode ini langsung. Seperti ditunjukkan pada Gambar 21-32, ketika CPU atau DMA ditulis ke register kontrol, output dari register kontrol dikirim langsung ke jalur jejak dalam siklus yang sama.


Gambar 21-32. Mode register kontrol langsung.

Mode register kontrol sinkron


Dalam mode sinkron, seperti yang ditunjukkan pada Gambar 21-33, output dari register kontrol disinkronkan kembali dengan jam yang sama dengan jam saat ini dari kontrol dan status (Status dan Kontrol, SC). Ini memungkinkan Anda untuk mengontrol diagram waktu dari output pada frekuensi SC yang dipilih, dan bukan pada frekuensi jam bus.


Gambar 21-33. Mode register kontrol sinkron.

Register kontrol mode pulsa


Mode pulsa mirip dengan mode sinkron, karena di dalamnya bit kontrol di-sampel ulang pada frekuensi SC; pulsa dimulai pada siklus clock SC pertama dan mengikuti siklus write bus. Output bit kontrol diatur selama satu siklus clock SC penuh. Pada akhir siklus jam ini, bit kontrol secara otomatis diatur ulang.

Dengan mode operasi ini, program dapat menulis 1 ke bit register kontrol untuk menghasilkan pulsa. Setelah bit diberi nilai 1, program akan membacanya sebagai 1 hingga akhir pulsa, setelah itu akan dibaca 0. Setelah itu, program dapat menulis 1 lagi untuk memulai pulsa baru. Dengan demikian, tidak mungkin untuk memberikan pulsa lebih sering daripada pada setiap langkah kedua dari sinyal SC.

Atur Ulang Daftar Manajemen


Register kontrol memiliki dua mode reset yang dikendalikan oleh bit konfigurasi RES EXT, seperti yang ditunjukkan pada Gambar 21-34. Ketika RES EXT adalah 0 (default), dalam mode sinkron atau pulsa, input reset yang dilacak akan mengatur ulang output yang disinkronkan, tetapi bukan bit kontrol itu sendiri. Ketika EXT RES adalah 1, input reset yang dapat dilacak mengatur ulang bit kontrol dan output yang disinkronkan.


Gambar 21-34. Setel ulang register manajemen.

21.3.3.3 Mode Input / Output Paralel


Dalam mode ini, kontrol dan pelacakan status terhubung ke sinyal Datapath paralel masuk dan keluar paralel. Untuk mengaktifkan mode ini, Anda perlu memiringkan bit konfigurasi SC OUT untuk memilih output paralel Datapath. Komunikasi dengan input paralel selalu tersedia, namun, koneksi jejak ini dibagi dengan input register status, input kontrol konter, dan interupsi output.


Gambar 21-35. Mode I / O paralel.

21.3.3.4 Mode Penghitung


Seperti ditunjukkan pada Gambar 21-36, ketika unit beroperasi dalam mode penghitung, penghitung penurunan 7-bit tersedia untuk digunakan baik di dalam operasi dalam UDB dan untuk kebutuhan program. Fitur meteran meliputi:

  • Daftar periode 7-bit, (baca / tulis).
  • Registrasi akun 7-bit, (baca / tulis). Akses hanya dimungkinkan ketika penghitung dihentikan.
  • Secara otomatis memuat ulang periode dalam register akun ketika mencapai nol.
  • Bit kontrol yang dapat diakses oleh perangkat lunak dalam register kontrol tambahan CNT MULAI, digunakan untuk memulai dan menghentikan penghitung. (Ini tumpang tindih sinyal perangkat keras ENABLE dan harus diinstal agar sinyal perangkat keras ENABLE opsional berfungsi).
  • Bit yang dipilih dari saluran jejak dari kontrol penghitung dinamis opsional untuk fungsi mulai dan memuat:
    - EN, sinyal yang dilacak untuk memulai atau berhenti menghitung.
    - LD, sinyal beban yang dapat dilacak yang menyebabkan pengisian ulang periode. Ketika sinyal ini dikokang, itu tumpang tindih dengan sinyal akhir yang tertunda. Ini sensitif terhadap level, dan sementara sinyal terkokang, periode terus memuat.
  • Penghitung 7-bit dapat dikirim untuk melacak sumber sebagai sc_out [6: 0].
  • Sinyal terminasi dapat memasukkan sumber daya jejak sebagai sc_out [7].
  • Dalam mode "default", mode gertakan digunakan untuk sinyal penghitungan. Dalam mode alternatif, ia beralih ke mode kombinasi.
  • Dalam mode default, sinyal EN perangkat keras opsional, jika digunakan, harus diatur untuk mengaktifkan sinyal perangkat keras LD. Dalam mode alternatif, sinyal perangkat keras LD dan EN bersifat independen.


Gambar 21-36. Mode penghitung
Catatan Penerjemah:
Di sekitar tempat ini, saya menyadari bahwa saya sama sekali tidak mengerti apa pun dari dokumen itu. Mode "standar" dan "alternatif" tidak dijelaskan. Setelah pencarian yang panjang, saya berhasil menemukan beberapa, tetapi sebuah contoh.
File: C: \ Program Files (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ psoc \ content \ CyComponentLibrary \ CyComponentLibrary.cylib \ bScanComp_v1_10 \ bScanComp_v1_10.v
Kode Penjelasan:



Teks yang sama:
cy_psoc3_count7 #(.cy_period(Period),.cy_route_ld(0),.cy_route_en(1), .cy_alt_mode(1)) ChannelCounter( /* input */ .clock(clk_int), /* input */ .reset(1'b0), /* input */ .load(1'b0), /* input */ .enable(enable_int), /* output [06:00] */ .count(count), /* output */ .tc(tc_o) ); 


Deklarasi komponen cy_psoc3_count7 yang saya temukan hanya untuk bahasa VHDL, tampaknya Verilog dibangun ke alat pengembangan. Sekarang Anda tahu kira-kira di mana mencari bit tala yang sedang dibahas.

Di sini kami mempertimbangkan bit-bit misterius, yang disebut SC OUT CTL atau SC_OUT_CTL, tetapi nilainya tidak didokumentasikan. Saya tidak menemukan mereka sama sekali di mana saja. Jelas dari teks bahwa mereka mengganti komponen STATUS_CONTROL antara mode. Tetapi dalam file VHDL yang disebutkan sebelumnya C: \ Program Files (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ lcpsoc3 \ cpsoc3.vhd

kita melihat secara terpisah penghitung sudah diketahui oleh kita
 component cy_psoc3_count7 generic(cy_period : std_logic_vector (6 downto 0) := "1111111"; cy_init_value : std_logic_vector (6 downto 0) := "0000000"; cy_route_ld : boolean := false; cy_route_en : boolean := false; cy_alt_mode : boolean := false); port (clock : in std_logic; reset : in std_logic; load : in std_logic; enable : in std_logic; count : out std_logic_vector (6 downto 0); tc : out std_logic); end component; 


secara terpisah - status dan manajemen
  attribute atomic_rtl of cy_psoc3_status : component is rtl_generic; attribute cpu_access of cy_psoc3_status : component is true; component cy_psoc3_statusi generic(cy_force_order : boolean := false; cy_md_select : std_logic_vector (6 downto 0) := "0000000"; cy_int_mask : std_logic_vector (6 downto 0) := "0000000"); port (reset : in std_logic := '0'; clock : in std_logic := '0'; status : in std_logic_vector (6 downto 0); interrupt : out std_logic); end component; attribute atomic_rtl of cy_psoc3_statusi : component is rtl_generic; attribute cpu_access of cy_psoc3_statusi : component is true; component cy_psoc3_control generic(cy_init_value : std_logic_vector (7 downto 0) := "00000000"; cy_force_order : boolean := false; cy_ctrl_mode_1 : std_logic_vector (7 downto 0) := "00000000"; cy_ctrl_mode_0 : std_logic_vector (7 downto 0) := "00000000"; cy_ext_reset : boolean := false); port (reset : in std_logic := '0'; clock : in std_logic := '0'; control : out std_logic_vector (7 downto 0)); end component; 


secara terpisah - sinkronisasi
 component cy_psoc3_sync port (clock : in std_logic := '0'; sc_in : in std_logic; sc_out : out std_logic); end component; 


Saya ulangi bahwa Verilog tidak memiliki versi deklarasi ini sama sekali (hanya ada model perilaku di C: \ Program Files (x86) \ Cypress \ PSoC Creator \ 4.2 \ PSoC Creator \ warp \ lib \ sim direktori, jadi saya pikir pengaturan bit mode tidak dapat diakses oleh programmer sederhana. Ketika membaca bagian ini, kita harus mengingat fakta ini. Sesuatu diberikan murni untuk referensi, itu tidak tunduk pada kita programmer.
Untuk mengaktifkan mode penghitung, output penghitung harus dipilih dalam bit SC_OUT_CTI [1: 0]. Dalam mode ini, operasi normal register kontrol tidak tersedia. Pada saat yang sama, register status dapat digunakan untuk operasi baca, tetapi Anda tidak boleh menggunakannya untuk menghasilkan interupsi, karena register pemetaan topeng juga digunakan sebagai register periode penghitung. Daftar periode tidak dihancurkan dan mempertahankan statusnya setelah bangun. Untuk periode pengukuran N, nilai N-1 harus dimuat ke dalam register periode. Nilai N = 1 (periode adalah nol) karena nilai pembagi frekuensi tidak didukung dan akan mengarah ke unit konstan pada output TC (Jumlah terminal, TC). Ketersediaan mode SYNC tergantung pada apakah kontrol dinamis (LD / EN) digunakan atau tidak. Jika tidak digunakan, itu tidak mempengaruhi mode SYNC. Jika digunakan, mode SYNC tidak tersedia.

21.3.3.5 Mode Sinkronisasi


Seperti yang ditunjukkan pada Gambar 21-37, register status dapat beroperasi sebagai jam ganda 4-bit yang disinkronkan dengan nilai SC_CLK saat ini jika bit SYNC MD diatur. Mode ini dapat digunakan untuk menerapkan sinkronisasi lokal sinyal asinkron (misalnya, input GPIO). Dalam hal ini, sinyal yang disinkronkan dipilih dari SC_IN [3: 0], output diarahkan ke kontak SC_IO_OUT [3: 0], dan SYNC MD secara otomatis mengalihkan kontak SC_IO ke mode output. Dalam mode ini, operasi normal dari register status tidak tersedia, dan mode bit status sticky secara paksa dinonaktifkan, terlepas dari pengaturan kontrol mode. Mode ini tidak memengaruhi register kontrol. Penghitung masih bisa digunakan, tetapi dengan keterbatasan. Dalam mode operasi ini, input dinamis (LD / EN) tidak dapat digunakan.


Gambar 21-37. Mode sinkron.

21.3.3.6 Status dan Kontrol Clocking


Register kontrol dan status memerlukan pemilihan jam dalam salah satu mode operasi berikut:

  • register status dengan bit dalam mode sticky dengan kliring setelah membaca,
  • kontrol register dalam mode penghitung,
  • mode sinkron.

Pengaturan waktu ditetapkan dalam modul jam dan setel ulang. Lihat 21.3.4. Modul kontrol jam dan reset.

21.3.3.7 Daftar Kontrol Bantu


Register kontrol bantu untuk membaca dan menulis adalah register khusus yang mengontrol peralatan UDB yang sulit diatur. Register ini memungkinkan CPU atau DMA untuk mengontrol interupsi, FIFO, dan operasi penghitung secara dinamis. Bit register dan deskripsinya diberikan di bawah ini:

Register kontrol bantu
76543210
CNT
MULAI
INT ENFIFO1
LVL
FIFO0
LVL
FIFO1
CLR
FIFO0
CLR

Bersihkan FIFO0 dan FIFO1 (FIFO0 Clear, FIFO1 Clear)


FIFO0 CLR dan FIFO1 CLR bit digunakan untuk mengatur ulang status FIFO yang sesuai. Ketika 1 ditulis ke bit-bit ini, keadaan FIFO yang sesuai diatur ulang. Untuk melanjutkan operasi FIFO, perlu untuk menulis 0. Bit-bit ini tetap dikokang.FIFO berfungsi sebagai buffer byte tunggal sederhana tanpa status.

Tingkat FIFO0 dan FIFO1 (Tingkat FIFO0, Tingkat FIFO1)


FIFO0 LVL dan FIFO1 LVL bit mengatur level di mana FIFO 4-byte meningkatkan status bus (ketika bus membaca atau menulis ke FIFO). Nilai status bus FIFO tergantung pada arah yang dikonfigurasi, seperti yang ditunjukkan pada tabel di bawah ini.

Tabel 21-21. Bit kontrol level FIFO.
FIFOx
LVL
Mode input
(Bus menulis ke FIFO)
Mode keluaran
(Bus membaca dari FIFO)
0Tidak penuh
Anda dapat menulis setidaknya 1 byte.
Tidak kosong
Setidaknya 1 byte tersedia untuk dibaca.
1Hancur setidaknya setengah.
Anda dapat menulis setidaknya 2 byte.
Setidaknya setengah penuh.
Setidaknya 2 byte tersedia untuk dibaca.

Aktifkan Interupsi


Ketika logika generasi register status diaktifkan, bit INT EN memungkinkan sinyal interupsi yang dihasilkan untuk lewat.

Mulai konter / akun? (Hitung Mulai)


Bit CNT START dapat digunakan untuk memulai dan menghentikan penghitung (hanya tersedia jika bit SC_OUT_CTL [1: 0] dikonfigurasikan untuk mode keluaran penghitung).

21.3.3.8 Ringkasan register manajemen dan status


Tabel di bawah ini merangkum fungsi register kontrol dan status. Harap dicatat bahwa register mask dan kontrol digabungkan dengan penghitung dan register periode, dan nilai register ini tidak bergantung pada mode operasi.

Tabel 21-22. Ringkasan singkat operasi manajemen dan register status
ModeManajemen / Penghitung
(Kontrol / hitung)
Status / Sinkronisasi
(Status / SYNC)
Overlay / Periode Topeng
(Topeng / Periode)
KontrolKontrol KeluarStatus Masuk atau SYNCOverlay Topeng Status
PenghitungCounter OutPeriode Penghitung a (Periode Hitung)
StatusKontrol Keluar atau Hitung KeluarStatus dalamOverlay Topeng Status
Sinkronkan (SYNC)Sinkronkan (SYNC)Tidak tersedia b (NA)

a. - perhatikan bahwa dalam mode penghitung, register masker overlay berfungsi sebagai register periode dan tidak dapat berfungsi sebagai register masker over. Akibatnya, output interupsi tidak tersedia ketika mode penghitung diaktifkan.

b. - perhatikan bahwa dalam mode sinkronisasi register status tidak tersedia, dan oleh karena itu tidak mungkin untuk menggunakan register masker overlay. Namun, ini dapat digunakan sebagai register periode untuk mode penghitung.

Dilanjutkan ...

Source: https://habr.com/ru/post/id443380/


All Articles