{"id":752,"date":"2019-05-05T11:46:59","date_gmt":"2019-05-05T17:46:59","guid":{"rendered":"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/?post_type=project&#038;p=752"},"modified":"2020-05-01T09:53:44","modified_gmt":"2020-05-01T15:53:44","slug":"arquitectura-de-computadoras","status":"publish","type":"project","link":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/project\/arquitectura-de-computadoras\/","title":{"rendered":"Arquitectura de computadoras"},"content":{"rendered":"<p><div class=\"et_d4_element et_pb_section et_pb_section_1 et_pb_with_background  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_0  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_0  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div id=\"op\" class=\"et_pb_module et_d4_element et_pb_post_title et_pb_post_title_0 op et_pb_bg_layout_dark  et_pb_text_align_center et_pb_featured_bg\"   >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_title_container\">\n\t\t\t\t\t<h1 class=\"entry-title\"><\/h1>\n\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h5 style=\"text-align: center\"><em>Proponer la selecci\u00f3n de ciertos equipos (arquitecturas computacionales) seg\u00fan los requerimientos de funcionalidad, rendimiento y costo, en laboratorios.<\/em><\/h5><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_section et_pb_section_2  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_1  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_1  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h1 style=\"text-align: center\">Realizaci\u00f3n de un procesador<\/h1><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>\nDividimos nuestras microarquitecturas en dos partes interactivas: la ruta de datos y la unidad de control. La ruta de datos opera en palabras de datos. Contiene estructuras como memorias, registros, ALU y multiplexores. Estamos implementando la arquitectura ARM de 32 bits, por lo que usamos una ruta de datos de 32 bits.<\/p>\n<p>La unidad de control recibe la instrucci\u00f3n actual de la ruta de datos y le dice a la ruta de datos c\u00f3mo ejecutar esa instrucci\u00f3n. Espec\u00edficamente, la unidad de control produce se\u00f1ales de selecci\u00f3n de multiplexor, habilitaci\u00f3n de registro y escritura de memoria para controlar el funcionamiento de la ruta de datos.<\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_image et_pb_image_0 et_pb_image_sticky\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<a href=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/WhatsApp-Image-2019-05-06-at-2.15.46-PM.jpeg\" class=\"et_pb_lightbox_image\" title=\"Procesador monociclo\"><span class=\"et_pb_image_wrap \"><img loading=\"lazy\" decoding=\"async\" width=\"1023\" height=\"598\" src=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/WhatsApp-Image-2019-05-06-at-2.15.46-PM.jpeg\" alt=\"Procesador monociclo\" title=\"\" srcset=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/WhatsApp-Image-2019-05-06-at-2.15.46-PM.jpeg 1023w, http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/WhatsApp-Image-2019-05-06-at-2.15.46-PM-300x175.jpeg 300w, http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/WhatsApp-Image-2019-05-06-at-2.15.46-PM-768x449.jpeg 768w\" sizes=\"(max-width: 1023px) 100vw, 1023px\" class=\"wp-image-998\" \/><\/span><\/a>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_section et_pb_section_3  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_2  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_2  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_tabs et_pb_tabs_0 \" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<ul class=\"et_pb_tabs_controls clearfix\">\n\t\t\t\t\t<li class=\"et_pb_tab_0 et_pb_tab_active\"><a href=\"#\">ARM<\/a><\/li><li class=\"et_pb_tab_1\"><a href=\"#\">Controlador<\/a><\/li><li class=\"et_pb_tab_2\"><a href=\"#\">Data path<\/a><\/li><li class=\"et_pb_tab_3\"><a href=\"#\">Reg file<\/a><\/li><li class=\"et_pb_tab_4\"><a href=\"#\">Extension<\/a><\/li>\n\t\t\t\t<\/ul>\n\t\t\t\t<div class=\"et_pb_all_tabs\">\n\t\t\t\t\t<div class=\"et_d4_element et_pb_tab et_pb_tab_0 clearfix et_pb_active_content\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_tab_content\"><h2 style=\"text-align: left\">ARM - processor<\/h2>\n<p style=\"text-align: left\"><strong>Descripci\u00f3n:<\/strong> Nuestra \u00fanica entrada es la instrucci\u00f3n ya que la funci\u00f3n del procesador es procesar instrucciones.<\/p>\n<ul style=\"text-align: left\">\n<li><strong>PC:<\/strong> devuelve el n\u00famero de la siguiente instrucci\u00f3n a ejecutar<\/li>\n<li><strong>Instr:<\/strong> contiene la instrucci\u00f3n a ejecutar<\/li>\n<li><strong>MemWrite:<\/strong> determina si se va a escribir en la memoria<\/li>\n<li><strong>ALUResult:<\/strong> WriteData: devuelve el resultado del ALU y el Data a escribir en la memoria<\/li>\n<li><strong>ReadData:<\/strong> es una entrada que muestra un dato de la memoria si la instrucci\u00f3n lo requiere<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-980 alignnone\" src=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/ARm.png\" alt=\"\" width=\"759\" height=\"427\" srcset=\"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/ARm.png 1920w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/ARm-300x169.png 300w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/ARm-768x432.png 768w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/ARm-1024x576.png 1024w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/ARm-1080x608.png 1080w\" sizes=\"(max-width: 759px) 100vw, 759px\" \/><\/p><\/div>\n\t\t\t<\/div><div class=\"et_d4_element et_pb_tab et_pb_tab_1 clearfix\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_tab_content\"><h2 style=\"text-align: left\">Controlador<\/h2>\n<p><strong>Descripci\u00f3n:<\/strong> El controlador es el que controla precisamente al datapath. Decodifica la instrucci\u00f3n para habilitar los componentes del datapath y utiliza un conditional check para verificar las condiciones de la instrucci\u00f3n, as\u00ed como la lectura y escritura de datos en la memoria.<\/p>\n<ul>\n<li>Instr: contiene la instrucci\u00f3n a decodificar<\/li>\n<li>ALUFlags: contiene las flags que devuelve el ALU<\/li>\n<li>RegSrc: Devuelve el registro origen<\/li>\n<li>RegWrite: habilita la escritura en los registros del regFile<\/li>\n<li>ImmSrc: Determina el tipo de operaci\u00f3n (procesamiento de datos, memoria o branches)<\/li>\n<li>ALUSrc: Habilita la entrada de datos al ALU<\/li>\n<li>ALUControl: Determina el tipo de operaci\u00f3n a realizar del ALU<\/li>\n<li>MemWrite: Habilita la escritura en la memoria<\/li>\n<li>MemtoReg: Permite escribir en un registro lo que hay en la memoria<\/li>\n<li>PCSrc: Devuelve el PC del conditionalcheck<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-981 size-full\" src=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/controller.png\" alt=\"\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/controller.png 1920w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/controller-300x169.png 300w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/controller-768x432.png 768w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/controller-1024x576.png 1024w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/controller-1080x608.png 1080w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p><\/div>\n\t\t\t<\/div><div class=\"et_d4_element et_pb_tab et_pb_tab_2 clearfix\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_tab_content\"><h2 style=\"text-align: left\">Datapath<\/h2>\n<p><strong>Descripci\u00f3n: <\/strong>determina el camino que los datos van a tomar y manda habilita los componentes seg\u00fan las se\u00f1ales del controlador.<\/p>\n<ul>\n<li>RegSrc: determina el tipo de operaci\u00f3n para el regFile<\/li>\n<li>RegWrite: habilita escribir en los registros<\/li>\n<li>ImmSrc: determina el tipo de operaci\u00f3n para la extensi\u00f3n (proceso de datos, memoria, branches)<\/li>\n<li>ALUSrc: coloca inmediato o no<\/li>\n<li>ALUControl: tipo de operaci\u00f3n del ALU<\/li>\n<li>MemtoReg: si se escribe lo de la memoria en el resultado<\/li>\n<li>PCSrc: dice cual ser\u00e1 la siguiente instrucci\u00f3n<\/li>\n<li>ReadData: es la salid del data memory<\/li>\n<li>PC: Es el n\u00famero de instrucci\u00f3n<\/li>\n<li>Instr: la instrucci\u00f3n PC<\/li>\n<li>ALUResult, WriteData: resultado del ALU, writeData es lo que se escribir\u00e1 en la memoria<\/li>\n<li>ALUFlags: salida de las banderas del ALU<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-984 size-full\" src=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/datapath.png\" alt=\"\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/datapath.png 1920w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/datapath-300x169.png 300w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/datapath-768x432.png 768w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/datapath-1024x576.png 1024w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/datapath-1080x608.png 1080w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p><\/div>\n\t\t\t<\/div><div class=\"et_d4_element et_pb_tab et_pb_tab_3 clearfix\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_tab_content\"><h2>Archivo de registro<\/h2>\n<p><strong>Descripci\u00f3n:\u00a0<\/strong>El circuito de registro consiste en multiples entradas tales como las entradas de registro de intrsucciones que tienen 4 bits, entradas de registro de 32 bits, un clk para la activaci\u00f3n de dicho componente, el cual se puene inicializar en cero o uno, y dos salidas de registros de 32 bits.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-988 size-full\" src=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file.png\" alt=\"\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file.png 1920w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-300x169.png 300w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-768x432.png 768w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-1024x576.png 1024w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-1080x608.png 1080w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-987 size-full\" src=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-2.png\" alt=\"\" width=\"1920\" height=\"1080\" srcset=\"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-2.png 1920w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-2-300x169.png 300w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-2-768x432.png 768w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-2-1024x576.png 1024w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/reg-file-2-1080x608.png 1080w\" sizes=\"(max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p>Habilitamos la escritura y escribimos un \u201c7\u201d en el Registro 15 como se muestra a continuaci\u00f3n. We3 habilita la escritura, wa3 es el registro destino y wd3 es la data a escribir.<\/p><\/div>\n\t\t\t<\/div><div class=\"et_d4_element et_pb_tab et_pb_tab_4 clearfix\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_tab_content\"><h2>Extensi\u00f3n<\/h2>\n<p><strong>Descripci\u00f3n:\u00a0<\/strong>El circuito de extensi\u00f3n consiste en dos entradas, la instrucci\u00f3n de 24 bits e Inmediato de Origen de 2 bits (00,01,10) y una salida llamada extensi\u00f3n final de 32 bits.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-986 size-full\" src=\"http:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/extension.png\" alt=\"\" width=\"1133\" height=\"592\" srcset=\"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/extension.png 1133w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/extension-300x157.png 300w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/extension-768x401.png 768w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/extension-1024x535.png 1024w, https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-content\/uploads\/sites\/16\/2019\/05\/extension-1080x564.png 1080w\" sizes=\"(max-width: 1133px) 100vw, 1133px\" \/><\/p>\n<p>Tenemos en el immSrc un \u201c00\u201d que nos indica una operaci\u00f3n de procesamiento de datos. La instrucci\u00f3n del bit 0 al 23 nos indica que el inmediato es un 5. Por lo tanto la extensi\u00f3n nos devuelve un la instrucci\u00f3n del bit 0 al 7 con 24 \u201c0\u201d concatenados.<\/p><\/div>\n\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_section et_pb_section_4  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_3  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_3  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><h1 style=\"text-align: center\">C\u00f3digos<\/h1><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_row et_pb_row_4  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_1_2 et_pb_column et_pb_column_4  et_pb_css_mix_blend_mode et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_toggle et_pb_toggle_0 et_pb_toggle_item  et_pb_toggle_close\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<h5 class=\"et_pb_toggle_title\">ARM<\/h5>\n\t\t\t\t<div class=\"et_pb_toggle_content clearfix\"><p>\n&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"vhdl\">library IEEE;\r\nuse IEEE.STD_LOGIC_1164.ALL;\r\nentity arm is\r\n--  Port ( );\r\n    port(clk, reset: in STD_LOGIC;\r\n    PC: out STD_LOGIC_VECTOR(31 downto 0);\r\n    Instr: in STD_LOGIC_VECTOR(31 downto 0);\r\n    MemWrite: out STD_LOGIC;\r\n    ALUResult, WriteData: out STD_LOGIC_VECTOR(31 downto 0);\r\n    ReadData: in STD_LOGIC_VECTOR(31 downto 0));\r\nend arm;\r\narchitecture struct of arm is\r\n    component controller\r\n        port(clk, reset: in STD_LOGIC;\r\n        Instr: in STD_LOGIC_VECTOR(31 downto 12);\r\n        ALUFlags: in STD_LOGIC_VECTOR(3 downto 0);\r\n        RegSrc: out STD_LOGIC_VECTOR(1 downto 0);\r\n        RegWrite: out STD_LOGIC;\r\n        ImmSrc: out STD_LOGIC_VECTOR(1 downto 0);\r\n        ALUSrc: out STD_LOGIC;\r\n        ALUControl: out STD_LOGIC_VECTOR(1 downto 0);\r\n        MemWrite: out STD_LOGIC;\r\n        MemtoReg: out STD_LOGIC;\r\n        PCSrc: out STD_LOGIC);\r\n    end component;\r\n    component datap\r\n        port(clk, reset: in STD_LOGIC;\r\n        RegSrc: in STD_LOGIC_VECTOR(1 downto 0);\r\n        RegWrite: in STD_LOGIC;\r\n        ImmSrc: in STD_LOGIC_VECTOR(1 downto 0);\r\n        ALUSrc: in STD_LOGIC;\r\n        ALUControl: in STD_LOGIC_VECTOR(1 downto 0);\r\n        MemtoReg: in STD_LOGIC;\r\n        PCSrc: in STD_LOGIC;\r\n        ALUFlags: out STD_LOGIC_VECTOR(3 downto 0);\r\n        PC: buffer STD_LOGIC_VECTOR(31 downto 0);\r\n        Instr: in STD_LOGIC_VECTOR(31 downto 0);\r\n        ALUResult, WriteData: buffer STD_LOGIC_VECTOR(31 downto 0);\r\n        ReadData: in STD_LOGIC_VECTOR(31 downto 0));\r\n    end component;\r\nsignal RegWrites, ALUSrcs, MemtoRegs, PCSrcs: STD_LOGIC;\r\nsignal RegSrcs, ImmSrcs, ALUControls: STD_LOGIC_VECTOR (1 downto 0);\r\nsignal ALUFlags: STD_LOGIC_VECTOR(3 downto 0);\r\nsignal PCs, ALUResults, WriteDatas: STD_LOGIC_VECTOR(31 downto 0);\r\nbegin\r\ncont: controller port map(clk, reset, Instr(31 downto 12), ALUFlags, RegSrcs, RegWrites, ImmSrcs, ALUSrcs, ALUControls, MemWrite, MemtoRegs, PCSrcs);\r\ndp: datap port map(clk, reset, RegSrcs, RegWrites, ImmSrcs, ALUSrcs, ALUControls, MemtoRegs, PCSrcs, ALUFlags, PCs, Instr, ALUResults, WriteDatas, ReadData);\r\n--RegWrite&lt;=RegWritesgnl;\r\nALUResult&lt;=ALUResults;\r\n--ReadData&lt;=MemWritesgnl;\r\n--PCSrc&lt;=PCSrcsgnl;\r\nPC&lt;=PCs;\r\nWriteData&lt;=WriteDatas;\r\nend;<\/pre><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_toggle et_pb_toggle_1 et_pb_toggle_item  et_pb_toggle_close\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<h5 class=\"et_pb_toggle_title\">Controller<\/h5>\n\t\t\t\t<div class=\"et_pb_toggle_content clearfix\"><p>\n&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"vhdl\">library IEEE;\r\nuse IEEE.STD_LOGIC_1164.ALL;\r\nentity controller is\r\n--  Port ( );\r\n    port(clk, reset: in STD_LOGIC;\r\n    Instr: in STD_LOGIC_VECTOR(31 downto 12);\r\n    ALUFlags: in STD_LOGIC_VECTOR(3 downto 0);\r\n    RegSrc: out STD_LOGIC_VECTOR(1 downto 0);\r\n    RegWrite: out STD_LOGIC;\r\n    ImmSrc: out STD_LOGIC_VECTOR(1 downto 0);\r\n    ALUSrc: out STD_LOGIC;\r\n    ALUControl: out STD_LOGIC_VECTOR(1 downto 0);\r\n    MemWrite: out STD_LOGIC;\r\n    MemtoReg: out STD_LOGIC;\r\n    PCSrc: out STD_LOGIC);\r\nend controller;\r\narchitecture struct of controller is\r\n    component decoder\r\n        port(Op: in STD_LOGIC_VECTOR(1 downto 0);\r\n        Funct: in STD_LOGIC_VECTOR(5 downto 0);\r\n        Rd: in STD_LOGIC_VECTOR(3 downto 0);\r\n        FlagW: out STD_LOGIC_VECTOR(1 downto 0);\r\n        PCS, RegW, MemW: out STD_LOGIC;\r\n        MemtoReg, ALUSrc: out STD_LOGIC;\r\n        ImmSrc, RegSrc: out STD_LOGIC_VECTOR(1 downto 0);\r\n        ALUControl: out STD_LOGIC_VECTOR(1 downto 0));\r\n    end component;\r\n    component conditional\r\n        port(clk, reset: in STD_LOGIC;\r\n        Cond: in STD_LOGIC_VECTOR(3 downto 0);\r\n        ALUFlags: in STD_LOGIC_VECTOR(3 downto 0);\r\n        FlagW: in STD_LOGIC_VECTOR(1 downto 0);\r\n        PCS, RegW, MemW: in STD_LOGIC;\r\n        PCSrc, RegWrite: out STD_LOGIC;\r\n        MemWrite: out STD_LOGIC);\r\n    end component;\r\nsignal FlagWsgnl: STD_LOGIC_VECTOR(1 downto 0);\r\nsignal PCSsgnl, RegWsgnl, MemWsgnl: STD_LOGIC;\r\nbegin\r\ndec: entity work.decoder port map(Op=&gt;Instr(27 downto 26), Funct=&gt;Instr(25 downto 20), Rd=&gt;Instr(15 downto 12), FlagW=&gt;FlagWsgnl, PCS=&gt;PCSsgnl, RegW=&gt;RegWsgnl, MemW=&gt;MemWsgnl, MemtoReg=&gt;MemtoReg, ALUSrc=&gt;ALUSrc, ImmSrc=&gt;ImmSrc, RegSrc=&gt;RegSrc, ALUControl=&gt;ALUControl);\r\ncl: entity work.conditional port map(clk=&gt;clk, reset=&gt;reset, Cond=&gt;Instr(31 downto 28), ALUFlags=&gt;ALUFlags, FlagW=&gt;FlagWsgnl, PCS=&gt;PCSsgnl, RegW=&gt;RegWsgnl, MemW=&gt;MemWsgnl, PCSrc=&gt;PCSrc, RegWrite=&gt;RegWrite, MemWrite=&gt;MemWrite);\r\nend;<\/pre><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_toggle et_pb_toggle_2 et_pb_toggle_item  et_pb_toggle_close\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<h5 class=\"et_pb_toggle_title\">Datapath<\/h5>\n\t\t\t\t<div class=\"et_pb_toggle_content clearfix\"><p>\n&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"vhdl\">library IEEE;\r\nuse IEEE.STD_LOGIC_1164.ALL;\r\nentity datap is\r\n--  Port ( );\r\nport(clk, reset: in STD_LOGIC;\r\nRegSrc: in STD_LOGIC_VECTOR(1 downto 0);\r\nRegWrite: in STD_LOGIC;\r\nImmSrc: in STD_LOGIC_VECTOR(1 downto 0);\r\nALUSrc: in STD_LOGIC;\r\nALUControl: in STD_LOGIC_VECTOR(1 downto 0);\r\nMemtoReg: in STD_LOGIC;\r\nPCSrc: in STD_LOGIC;\r\nALUFlags: out STD_LOGIC_VECTOR(3 downto 0);\r\nPC: buffer STD_LOGIC_VECTOR(31 downto 0);\r\nInstr: in STD_LOGIC_VECTOR(31 downto 0);\r\nALUResult, WriteData: buffer STD_LOGIC_VECTOR(31 downto 0);\r\nReadData: in STD_LOGIC_VECTOR(31 downto 0));\r\nend datap;\r\narchitecture struct of datap is\r\ncomponent alu\r\ngeneric(M: integer :=32);\r\nPort (a,b : in STD_LOGIC_VECTOR (M-1 downto 0);\r\ncontrol : in STD_LOGIC_VECTOR (1 downto 0);\r\nresult : out STD_LOGIC_VECTOR (M-1 downto 0);\r\nflags : out STD_LOGIC_VECTOR (3 downto 0));\r\nend component;\r\ncomponent regfile\r\nport(clk: in STD_LOGIC;\r\nwe3: in STD_LOGIC;\r\nra1, ra2, wa3: in STD_LOGIC_VECTOR(3 downto 0);\r\nwd3, r15: in STD_LOGIC_VECTOR(31 downto 0);\r\nrd1, rd2: out STD_LOGIC_VECTOR(31 downto 0));\r\nend component;\r\ncomponent adder is\r\ngeneric(N: integer := 32);\r\nport(a, b: in STD_LOGIC_VECTOR(N-1 downto 0);\r\ns: out STD_LOGIC_VECTOR(N-1 downto 0);\r\ncin: in STD_LOGIC;\r\ncout: out STD_LOGIC);\r\nend component;\r\ncomponent immediate\r\nport(Instr: in STD_LOGIC_VECTOR(23 downto 0);\r\nImmSrc: in STD_LOGIC_VECTOR(1 downto 0);\r\nExtImm: out STD_LOGIC_VECTOR(31 downto 0));\r\nend component;\r\ncomponent flopenr generic(width: integer:= 4);\r\nport(clk, reset, en: in STD_LOGIC;\r\nd: in STD_LOGIC_VECTOR(width-1 downto 0);\r\nq: out STD_LOGIC_VECTOR(width-1 downto 0));\r\nend component;\r\ncomponent mux21 generic (N: integer:= 4);\r\nPort (c1, c2 : in STD_LOGIC_VECTOR (N-1 downto 0);\r\ns : in STD_LOGIC;\r\nz : out STD_LOGIC_VECTOR (N-1 downto 0));\r\nend component;\r\nsignal PCNext, PCPlus4, PCPlus8: STD_LOGIC_VECTOR(31 downto 0);\r\nsignal ExtImm, Result: STD_LOGIC_VECTOR(31 downto 0);\r\nsignal SrcA, SrcB: STD_LOGIC_VECTOR(31 downto 0);\r\nsignal RA1, RA2: STD_LOGIC_VECTOR(3 downto 0);\r\nsignal PCs: STD_LOGIC_VECTOR(31 downto 0);\r\nsignal writedatas: STD_LOGIC_VECTOR(31 downto 0);\r\nsignal aluresults: STD_LOGIC_VECTOR(31 downto 0);\r\nbegin\r\n-- next PC logic\r\npcmux: mux21 generic map(32) port map(PCPlus4, Result, PCSrc, PCNext);\r\npcreg: flopenr generic map(32) port map(clk, reset, '1', PCNext, pcs);\r\nPC&lt;=pcs;\r\npcadd1: adder port map(PCs, X\"00000004\", PCPlus4,'0');\r\npcadd2: adder port map(PCPlus4, X\"00000004\", PCPlus8,'0');\r\n-- register file logic\r\nra1mux: mux21 generic map (4) port map(Instr(19 downto 16), \"1111\", RegSrc(0), RA1);\r\nra2mux: mux21 generic map (4) port map(Instr(3 downto 0), Instr(15 downto 12), RegSrc(1), RA2);\r\nrf: regfile port map(clk, RegWrite, RA1, RA2, Instr(15 downto 12), Result, PCPlus8, SrcA, writedatas);\r\nWriteData&lt;=writedatas;\r\nresmux: mux21 generic map(32) port map(ALUResults, ReadData, MemtoReg, Result);\r\next: immediate port map(Instr(23 downto 0), ImmSrc, ExtImm);\r\n-- ALU logic\r\nsrcbmux: mux21 generic map(32) port map(writedatas, ExtImm, ALUSrc, SrcB);\r\ni_alu: alu port map(SrcA, SrcB, ALUControl, ALUResults, ALUFlags);\r\nALUResult&lt;=ALUResults;\r\nend;<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div><div class=\"et_d4_element et_pb_column_1_2 et_pb_column et_pb_column_5  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_toggle et_pb_toggle_3 et_pb_toggle_item  et_pb_toggle_close\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<h5 class=\"et_pb_toggle_title\">Regfile<\/h5>\n\t\t\t\t<div class=\"et_pb_toggle_content clearfix\"><p>\n&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"vhdl\">library IEEE;\r\nuse IEEE.STD_LOGIC_1164.ALL;\r\nuse IEEE.STD_LOGIC_UNSIGNED.ALL;\r\nuse IEEE.NUMERIC_STD.ALL;\r\n\r\nentity regfile is -- three-port register file\r\n    port(clk: in STD_LOGIC;\r\n    we3: in STD_LOGIC;\r\n    ra1, ra2, wa3: in STD_LOGIC_VECTOR(3 downto 0);\r\n    wd3, r15: in STD_LOGIC_VECTOR(31 downto 0);\r\n    rd1, rd2: out STD_LOGIC_VECTOR(31 downto 0));\r\nend;\r\n\r\narchitecture behave of regfile is\r\n    type ramtype is array (31 downto 0) of\r\n    STD_LOGIC_VECTOR(31 downto 0);\r\n    signal mem: ramtype;\r\n    \r\nbegin\r\n    process(clk) begin\r\n        if rising_edge(clk) then\r\n            if we3 = '1' then \r\n                mem(to_integer(unsigned(wa3))) &lt;= wd3;\r\n            end if;\r\n        end if;\r\n    end process;\r\n    process(clk, we3, ra1, ra2, wa3, wd3, r15) begin\r\n        if (to_integer(unsigned(ra1)) = 15) then \r\n            rd1 &lt;= r15;\r\n        else \r\n            rd1 &lt;= mem(to_integer(unsigned(ra1)));\r\n        end if;\r\n        if (to_integer(unsigned(ra2)) = 15) then \r\n            rd2 &lt;= r15;\r\n        else \r\n            rd2 &lt;= mem(to_integer(unsigned(ra2)));\r\n        end if;\r\n    end process;\r\nend;<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p><\/div>\n\t\t\t<\/div><div class=\"et_pb_module et_d4_element et_pb_toggle et_pb_toggle_4 et_pb_toggle_item  et_pb_toggle_close\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<h5 class=\"et_pb_toggle_title\">Extension<\/h5>\n\t\t\t\t<div class=\"et_pb_toggle_content clearfix\"><p>\n&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"vhdl\">library IEEE; \r\nuse IEEE.STD_LOGIC_1164.all;\r\nentity extend is\r\n    port(Instr: in STD_LOGIC_VECTOR(23 downto 0);\r\n    ImmSrc: in STD_LOGIC_VECTOR(1 downto 0);\r\n    ExtImm: out STD_LOGIC_VECTOR(31 downto 0));\r\nend;\r\narchitecture behave of extend is\r\nbegin\r\n    process(Instr, ImmSrc) \r\n    begin\r\n    case ImmSrc is\r\n        when \"00\" =&gt; \r\n        ExtImm &lt;= (X\"000000\"&amp;Instr(7 downto 0));\r\n        when \"01\" =&gt; \r\n        ExtImm &lt;= (X\"00000\"&amp;Instr(11 downto 0));\r\n        when \"10\" =&gt; ExtImm &lt;= (Instr(23) &amp; Instr(23) &amp; Instr(23)&amp;Instr(23) &amp; \r\n        Instr(23)&amp;Instr(23) &amp; Instr(23 downto 0) &amp; \"00\");\r\n        when others =&gt; ExtImm &lt;= (others =&gt; '-');\r\n    end case;\r\n    end process;\r\nend;<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><div class=\"et_d4_element et_pb_section et_pb_section_6 et_pb_with_background  et_pb_css_mix_blend_mode et_section_regular et_block_section\" >\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_d4_element et_pb_row et_pb_row_5  et_pb_css_mix_blend_mode et_block_row\">\n\t\t\t\t<div class=\"et_d4_element et_pb_column_4_4 et_pb_column et_pb_column_6  et_pb_css_mix_blend_mode et-last-child et_block_column\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_module et_d4_element et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t<div class=\"et_pb_text_inner\"><p>\u00a0<\/p>\n<h3>Reflexi\u00f3n<\/h3>\n<p>El n\u00famero de instrucciones en un programa depende de la arquitectura del procesador. Algunas arquitecturas tienen instrucciones complicadas que hacen m\u00e1s trabajo por instrucci\u00f3n, lo que reduce el n\u00famero de instrucciones en un programa. Sin embargo, estas instrucciones complicadas suelen ser m\u00e1s lentas de ejecutar en hardware.<\/p>\n<p>La computadora maneja un lenguaje binario. A trav\u00e9s del lenguaje ensamblador, los lenguajes de programaci\u00f3n, diversas interfaces, compiladores y dem\u00e1s podemos facilitar la interacci\u00f3n hombre-m\u00e1quina.<\/p>\n<p>\u00a0<\/p><\/div>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t\n\t\t\t<\/div><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":18,"featured_media":902,"comment_status":"open","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"project_category":[16],"project_tag":[],"class_list":["post-752","project","type-project","status-publish","has-post-thumbnail","hentry","project_category-portafolio-ii"],"_links":{"self":[{"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project\/752","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project"}],"about":[{"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/types\/project"}],"author":[{"embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/comments?post=752"}],"version-history":[{"count":63,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project\/752\/revisions"}],"predecessor-version":[{"id":1054,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project\/752\/revisions\/1054"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/media\/902"}],"wp:attachment":[{"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/media?parent=752"}],"wp:term":[{"taxonomy":"project_category","embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project_category?post=752"},{"taxonomy":"project_tag","embeddable":true,"href":"https:\/\/portafoliosfit.um.edu.mx\/sarahhdz\/wp-json\/wp\/v2\/project_tag?post=752"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}