URL
https://opencores.org/ocsvn/neo430/neo430/trunk
Subversion Repositories neo430
Compare Revisions
- This comparison shows the changes necessary to convert path
/neo430
- from Rev 158 to Rev 159
- ↔ Reverse comparison
Rev 158 → Rev 159
/trunk/README.md
139,6 → 139,13
stnolting@gmail.com |
|
|
## Citation |
|
If you are using the NEO430 for some publication, please cite it as follows: |
|
> S. Nolting, "The NEO430 Processor", github.com/stnolting/neo430 |
|
|
## Proprietary Notice |
|
"MSP430" is a trademark of Texas Instruments Corporation. |
/trunk/doc/NEO430.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/rtl/core/neo430_package.vhd
19,7 → 19,7
-- # You should have received a copy of the GNU Lesser General Public License along with this # |
-- # source; if not, download it from https://www.gnu.org/licenses/lgpl-3.0.en.html # |
-- # ********************************************************************************************* # |
-- # Stephan Nolting, Hannover, Germany 29.09.2018 # |
-- # Stephan Nolting, Hannover, Germany 01.11.2018 # |
-- ################################################################################################# |
|
library ieee; |
30,7 → 30,7
|
-- Processor Hardware Version ------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
constant hw_version_c : std_ulogic_vector(15 downto 0) := x"0186"; -- no touchy! |
constant hw_version_c : std_ulogic_vector(15 downto 0) := x"0187"; -- no touchy! |
|
-- Danger Zone! --------------------------------------------------------------------------- |
-- ------------------------------------------------------------------------------------------- |
/trunk/rtl/core/neo430_top.vhd
44,7 → 44,7
-- # You should have received a copy of the GNU Lesser General Public License along with this # |
-- # source; if not, download it from https://www.gnu.org/licenses/lgpl-3.0.en.html # |
-- # ********************************************************************************************* # |
-- # Stephan Nolting, Hannover, Germany 29.09.2018 # |
-- # Stephan Nolting, Hannover, Germany 01.11.2018 # |
-- ################################################################################################# |
|
library ieee; |
163,7 → 163,7
signal timer_irq : std_ulogic; |
signal usart_irq : std_ulogic; |
signal gpio_irq : std_ulogic; |
signal xirq_sync : std_ulogic_vector(01 downto 0); |
signal xirq_sync : std_ulogic; |
|
-- misc -- |
signal imem_up_en : std_ulogic; |
258,15 → 258,15
external_irq_sync: process(clk_i) |
begin |
if rising_edge(clk_i) then |
xirq_sync <= xirq_sync(0) & irq_i; |
xirq_sync <= irq_i; |
end if; |
end process external_irq_sync; |
|
-- interrupt priority assignment -- |
irq(0) <= timer_irq; -- timer match (highest priority) |
irq(1) <= usart_irq; -- UART Rx available [OR] UART Tx done [OR] SPI RTX done |
irq(2) <= gpio_irq; -- GPIO input pin change |
irq(3) <= xirq_sync(1); -- external interrupt request (lowest priority) |
irq(0) <= timer_irq; -- timer match (highest priority) |
irq(1) <= usart_irq; -- UART Rx available [OR] UART Tx done [OR] SPI RTX done |
irq(2) <= gpio_irq; -- GPIO input pin change |
irq(3) <= xirq_sync; -- external interrupt request (lowest priority) |
|
-- external interrupt acknowledge -- |
irq_ack_o <= irq_ack(3); -- the internal irq sources do not require an acknowledge |
/trunk/sim/ISIM/neo430_tb.wcfg
12,15 → 12,15
</db_ref> |
</db_ref_list> |
<zoom_setting> |
<ZoomStartTime time="295660916667fs"></ZoomStartTime> |
<ZoomEndTime time="296225416668fs"></ZoomEndTime> |
<Cursor1Time time="295855917000fs"></Cursor1Time> |
<ZoomStartTime time="26193350000000fs"></ZoomStartTime> |
<ZoomEndTime time="26193560000001fs"></ZoomEndTime> |
<Cursor1Time time="26193441000000fs"></Cursor1Time> |
</zoom_setting> |
<column_width_setting> |
<NameColumnWidth column_width="135"></NameColumnWidth> |
<ValueColumnWidth column_width="58"></ValueColumnWidth> |
<NameColumnWidth column_width="167"></NameColumnWidth> |
<ValueColumnWidth column_width="105"></ValueColumnWidth> |
</column_width_setting> |
<WVObjectSize size="111" /> |
<WVObjectSize size="105" /> |
<wvobject type="divider" fp_name="divider6"> |
<obj_property name="label">Global</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
99,7 → 99,6
<wvobject fp_name="/neo430_tb/neo430_top_inst/neo430_cpu_inst/neo430_reg_file_inst/sreg" type="array"> |
<obj_property name="ElementShortName">sreg[15:0]</obj_property> |
<obj_property name="ObjectShortName">sreg[15:0]</obj_property> |
<obj_property name="isExpanded"></obj_property> |
</wvobject> |
<wvobject fp_name="/neo430_tb/neo430_top_inst/neo430_cpu_inst/neo430_reg_file_inst/reg_file" type="array"> |
<obj_property name="ElementShortName">reg_file[15:0][15:0]</obj_property> |
181,19 → 180,7
<obj_property name="ElementShortName">imem_up_en</obj_property> |
<obj_property name="ObjectShortName">imem_up_en</obj_property> |
</wvobject> |
<wvobject fp_name="/neo430_tb/neo430_top_inst/neo430_imem_inst/imem_file_h" type="array"> |
<obj_property name="ElementShortName">imem_file_h[0:2047][7:0]</obj_property> |
<obj_property name="ObjectShortName">imem_file_h[0:2047][7:0]</obj_property> |
</wvobject> |
<wvobject fp_name="/neo430_tb/neo430_top_inst/neo430_imem_inst/imem_file_l" type="array"> |
<obj_property name="ElementShortName">imem_file_l[0:2047][7:0]</obj_property> |
<obj_property name="ObjectShortName">imem_file_l[0:2047][7:0]</obj_property> |
</wvobject> |
<wvobject type="divider" fp_name="divider44"> |
<obj_property name="label">Bootloader ROM</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
</wvobject> |
<wvobject type="divider" fp_name="divider44"> |
<obj_property name="label">IO: USART</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
</wvobject> |
471,16 → 458,4
<obj_property name="label">PWM</obj_property> |
<obj_property name="DisplayName">label</obj_property> |
</wvobject> |
<wvobject fp_name="/neo430_tb/neo430_top_inst/neo430_pwm_inst_true/neo430_pwm_inst/enable" type="logic"> |
<obj_property name="ElementShortName">enable</obj_property> |
<obj_property name="ObjectShortName">enable</obj_property> |
</wvobject> |
<wvobject fp_name="/neo430_tb/neo430_top_inst/neo430_pwm_inst_true/neo430_pwm_inst/pwm_o" type="array"> |
<obj_property name="ElementShortName">pwm_o[2:0]</obj_property> |
<obj_property name="ObjectShortName">pwm_o[2:0]</obj_property> |
</wvobject> |
<wvobject fp_name="/neo430_tb/neo430_top_inst/neo430_pwm_inst_true/neo430_pwm_inst/prsc_tick" type="logic"> |
<obj_property name="ElementShortName">prsc_tick</obj_property> |
<obj_property name="ObjectShortName">prsc_tick</obj_property> |
</wvobject> |
</wave_config> |
/trunk/sim/neo430_tb.vhd
22,7 → 22,7
-- # You should have received a copy of the GNU Lesser General Public License along with this # |
-- # source; if not, download it from https://www.gnu.org/licenses/lgpl-3.0.en.html # |
-- # ********************************************************************************************* # |
-- # Stephan Nolting, Hanover, Germany 09.08.2018 # |
-- # Stephan Nolting, Hanover, Germany 01.11.2018 # |
-- ################################################################################################# |
|
library ieee; |
60,6 → 60,7
|
-- generators -- |
signal clk_gen, rst_gen : std_ulogic := '0'; |
signal irq, irq_ack : std_ulogic; |
|
-- local signals -- |
signal uart_txd : std_ulogic; |
132,13 → 133,28
wb_cyc_o => open, -- valid cycle |
wb_ack_i => '0', -- transfer acknowledge |
-- external interrupt -- |
irq_i => '0', -- external interrupt request line |
irq_ack_o => open -- external interrupt request acknowledge |
irq_i => irq, -- external interrupt request line |
irq_ack_o => irq_ack -- external interrupt request acknowledge |
); |
|
|
-- Dummy UART Receiver ------------------------------------------------------ |
-- Interrupt Generator ------------------------------------------------------ |
-- ----------------------------------------------------------------------------- |
interrupt_gen: process |
begin |
irq <= '0'; |
wait for 20 ms; |
wait until rising_edge(clk_gen); |
irq <= '1'; |
wait for t_clock_c; |
wait until rising_edge(irq_ack); |
irq <= '0'; |
wait; |
end process interrupt_gen; |
|
|
-- Console UART Receiver ---------------------------------------------------- |
-- ----------------------------------------------------------------------------- |
uart_rx_unit: process(clk_gen) |
variable i, j : integer; |
file uart_rx_file : text open write_mode is "uart_rx_dump.txt"; |