nios2_uc_pio_MATRIX.v 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //Legal Notice: (C)2020 Altera Corporation. All rights reserved. Your
  2. //use of Altera Corporation's design tools, logic functions and other
  3. //software and tools, and its AMPP partner logic functions, and any
  4. //output files any of the foregoing (including device programming or
  5. //simulation files), and any associated documentation or information are
  6. //expressly subject to the terms and conditions of the Altera Program
  7. //License Subscription Agreement or other applicable license agreement,
  8. //including, without limitation, that your use is for the sole purpose
  9. //of programming logic devices manufactured by Altera and sold by Altera
  10. //or its authorized distributors. Please refer to the applicable
  11. //agreement for further details.
  12. // synthesis translate_off
  13. `timescale 1ns / 1ps
  14. // synthesis translate_on
  15. // turn off superfluous verilog processor warnings
  16. // altera message_level Level1
  17. // altera message_off 10034 10035 10036 10037 10230 10240 10030
  18. module nios2_uc_pio_MATRIX (
  19. // inputs:
  20. address,
  21. chipselect,
  22. clk,
  23. reset_n,
  24. write_n,
  25. writedata,
  26. // outputs:
  27. out_port,
  28. readdata
  29. )
  30. ;
  31. output [ 19: 0] out_port;
  32. output [ 31: 0] readdata;
  33. input [ 1: 0] address;
  34. input chipselect;
  35. input clk;
  36. input reset_n;
  37. input write_n;
  38. input [ 31: 0] writedata;
  39. wire clk_en;
  40. reg [ 19: 0] data_out;
  41. wire [ 19: 0] out_port;
  42. wire [ 19: 0] read_mux_out;
  43. wire [ 31: 0] readdata;
  44. assign clk_en = 1;
  45. //s1, which is an e_avalon_slave
  46. assign read_mux_out = {20 {(address == 0)}} & data_out;
  47. always @(posedge clk or negedge reset_n)
  48. begin
  49. if (reset_n == 0)
  50. data_out <= 0;
  51. else if (chipselect && ~write_n && (address == 0))
  52. data_out <= writedata[19 : 0];
  53. end
  54. assign readdata = {32'b0 | read_mux_out};
  55. assign out_port = data_out;
  56. endmodule